免费在线a视频-免费在线观看a视频-免费在线观看大片影视大全-免费在线观看的视频-色播丁香-色播基地

Spring Boot 這么火,常用注解和原理都給你整理好了!

:2020年02月20日 腳本之家
分享到:

一、啟動注解 @SpringBootApplication@Target(ElementType.TYPE)@Retention(RetentionPolicy.RUNTIME)@Documented@Inherited@SpringBootConfiguration@EnableAutoConfiguration@ComponentScan(excludeFi...

一、啟動注解 @SpringBootApplication

  1. @Target(ElementType.TYPE)

  2. @Retention(RetentionPolicy.RUNTIME)

  3. @Documented

  4. @Inherited

  5. @SpringBootConfiguration

  6. @EnableAutoConfiguration

  7. @ComponentScan(excludeFilters = { @Filter(type = FilterType.CUSTOM, classes = TypeExcludeFilter.class),

  8. @Filter(type = FilterType.CUSTOM, classes = AutoConfigurationExcludeFilter.class) })

  9. public@interfaceSpringBootApplication{

  10. }

查看源碼可發現, @SpringBootApplication是一個復合注解,包含了 @SpringBootConfiguration, @EnableAutoConfiguration`,@ComponentScan` 這三個注解

`@SpringBootConfiguration注解,繼承 @Configuration注解,主要用于加載配置文件 @SpringBootConfiguration繼承自 @Configuration,二者功能也一致,標注當前類是配置類, 并會將當前類內聲明的一個或多個以 @Bean 注解標記的方法的實例納入到 spring 容器中,并且實例名就是方法名。

@EnableAutoConfiguration 注解,開啟自動配置功能 @EnableAutoConfiguration可以幫助 SpringBoot 應用將所有符合條件的 @Configuration配置都加載到當前 SpringBoot 創建并使用的 IoC 容器。借助于 Spring 框架原有的一個工具類:SpringFactoriesLoader 的支持, @EnableAutoConfiguration可以智能的自動配置功效才得以大功告成

@ComponentScan 注解,主要用于組件掃描和自動裝配 @ComponentScan的功能其實就是自動掃描并加載符合條件的組件或 bean 定義,最終將這些 bean 定義加載到容器中。我們可以通過 basePackages 等屬性指定 @ComponentScan自動掃描的范圍,如果不指定,則默認 Spring 框架實現從聲明 @ComponentScan所在類的 package 進行掃描,默認情況下是不指定的,所以 SpringBoot 的啟動類最好放在 root package 下。

二、Controller 相關注解

@Controller

控制器,處理 http 請求。

@RestController 復合注解

查看 @RestController 源碼

  1. @Target(ElementType.TYPE)

  2. @Retention(RetentionPolicy.RUNTIME)

  3. @Documented

  4. @Controller

  5. @ResponseBody

  6. public@interfaceRestController{

  7. @AliasFor(annotation = Controller.class)

  8. String value() default"";

  9. }

從源碼我們知道, @RestController注解相當于 @ResponseBody@Controller合在一起的作用, RestController 使用的效果是將方法返回的對象直接在瀏覽器上展示成 json 格式.

@RequestBody

通過 HttpMessageConverter 讀取 Request Body 并反序列化為 Object(泛指)對象

@RequestMapping

@RequestMapping 是 Spring Web 應用程序中最常被用到的注解之一。這個注解會將 HTTP 請求映射到 MVC 和 REST 控制器的處理方法上

@GetMapping 用于將 HTTP get 請求映射到特定處理程序的方法注解

注解簡寫:@RequestMapping(value = "/say",method = RequestMethod.GET) 等價于:@GetMapping(value = "/say")

GetMapping 源碼

  1. @Target(ElementType.METHOD)

  2. @Retention(RetentionPolicy.RUNTIME)

  3. @Documented

  4. @RequestMapping(method = RequestMethod.GET)

  5. public@interfaceGetMapping{

  6. }

是 @RequestMapping(method = RequestMethod.GET) 的縮寫

@PostMapping 用于將 HTTP post 請求映射到特定處理程序的方法注解

  1. @Target(ElementType.METHOD)

  2. @Retention(RetentionPolicy.RUNTIME)

  3. @Documented

  4. @RequestMapping(method = RequestMethod.POST)

  5. public@interfacePostMapping{

  6. }

是 @RequestMapping(method = RequestMethod.POST) 的縮寫

三、取請求參數值

@PathVariable: 獲取 url 中的數據

  1. @Controller

  2. @RequestMapping("/User")

  3. publicclassHelloWorldController{

  4. @RequestMapping("/getUser/{uid}")

  5. publicString getUser(@PathVariable("uid")Integer id, Model model) {

  6. System.out.println("id:"+id);

  7. return"user";

  8. }

  9. }

請求示例:http://localhost:8080/User/getUser/123

@RequestParam: 獲取請求參數的值

  1. @Controller

  2. @RequestMapping("/User")

  3. publicclassHelloWorldController{

  4. @RequestMapping("/getUser")

  5. publicString getUser(@RequestParam("uid")Integer id, Model model) {

  6. System.out.println("id:"+id);

  7. return"user";

  8. }

  9. }

請求示例:http://localhost:8080/User/getUser?uid=123

四、注入 bean 相關

@Repository DAO 層注解,DAO 層中接口繼承 JpaRepository, 需要在 build.gradle 中引入相關 jpa 的一個 jar 自動加載。

Repository 注解源碼

  1. @Target({ElementType.TYPE})

  2. @Retention(RetentionPolicy.RUNTIME)

  3. @Documented

  4. @Component

  5. public@interfaceRepository{

  6. @AliasFor(annotation = Component.class)

  7. String value() default"";

  8. }

  1. @Service

  2. @Target({ElementType.TYPE})

  3. @Retention(RetentionPolicy.RUNTIME)

  4. @Documented

  5. @Component

  6. public@interfaceService{

  7. @AliasFor(annotation = Component.class)

  8. String value() default"";

  9. }

@Service 是 @Component 注解的一個特例,作用在類上 @Service 注解作用域默認為單例 使用注解配置和類路徑掃描時,被 @Service 注解標注的類會被 Spring 掃描并注冊為 Bean @Service 用于標注服務層組件, 表示定義一個 bean @Service 使用時沒有傳參數,Bean 名稱默認為當前類的類名,首字母小寫 @Service(“serviceBeanId”) 或 @Service(value=”serviceBeanId”) 使用時傳參數,使用 value 作為 Bean 名字 @Scope 作用域注解 @Scope 作用在類上和方法上,用來配置 spring bean 的作用域,它標識 bean 的作用域

@Scope 源碼

  1. @Target({ElementType.TYPE, ElementType.METHOD})

  2. @Retention(RetentionPolicy.RUNTIME)

  3. @Documented

  4. public@interfaceScope{

  5. @AliasFor("scopeName")

  6. String value() default"";

  7. @AliasFor("value")

  8. String scopeName() default"";

  9. ScopedProxyMode proxyMode() defaultScopedProxyMode.DEFAULT;

  10. }

屬性介紹

value

  • singleton   表示該 bean 是單例的。(默認)

  • prototype   表示該 bean 是多例的,即每次使用該 bean 時都會新建一個對象。

  • request     在一次 http 請求中,一個 bean 對應一個實例。

  • session     在一個 httpSession 中,一個 bean 對應一個實例。

proxyMode

  • DEFAULT         不使用代理。(默認)

  • NO              不使用代理,等價于 DEFAULT。

  • INTERFACES      使用基于接口的代理 (jdk dynamic proxy)。

  • TARGET_CLASS    使用基于類的代理 (cglib)。

@Entity 實體類注解

@Table(name ="數據庫表名"),這個注解也注釋在實體類上,對應數據庫中相應的表。

@Id、@Column 注解用于標注實體類中的字段,pk 字段標注為 @Id,其余 @Column。

@Bean 產生一個 bean 的方法

@Bean 明確地指示了一種方法,產生一個 bean 的方法,并且交給 Spring 容器管理。支持別名 @Bean("xx-name")

@Autowired 自動導入

@Autowired 注解作用在構造函數、方法、方法參數、類字段以及注解上

@Autowired 注解可以實現 Bean 的自動注入

@Component 把普通 pojo 實例化到 spring 容器中,相當于配置文件中的

雖然有了 @Autowired, 但是我們還是要寫一堆 bean 的配置文件, 相當麻煩, 而 @Component 就是告訴 spring, 我是 pojo 類, 把我注冊到容器中吧, spring 會自動提取相關信息。那么我們就不用寫麻煩的 xml 配置文件了

五、導入配置文件

@PropertySource 注解

引入單個 properties 文件:

@PropertySource(value = {"classpath : xxxx/xxx.properties"})

引入多個 properties 文件:

@PropertySource(value = {"classpath : xxxx/xxx.properties","classpath : xxxx.properties"})

@ImportResource 導入 xml 配置文件

可以額外分為兩種模式 相對路徑 classpath,絕對路徑(真實路徑)file

注意:單文件可以不寫 value 或 locations,value 和 locations 都可用

相對路徑(classpath)

引入單個 xml 配置文件:@ImportSource("classpath : xxx/xxxx.xml")

引入多個 xml 配置文件:@ImportSource(locations={"classpath : xxxx.xml" , "classpath : yyyy.xml"})

絕對路徑(file)

引入單個 xml 配置文件:@ImportSource(locations= {"file : d:/hellxz/dubbo.xml"})

引入多個 xml 配置文件:@ImportSource(locations= {"file : d:/hellxz/application.xml" , "file : d:/hellxz/dubbo.xml"})

取值:使用 @Value 注解取配置文件中的值

@Value("${properties 中的鍵}") private String xxx;

@Import 導入額外的配置信息

功能類似 XML 配置的,用來導入配置類,可以導入帶有 @Configuration 注解的配置類或實現了 ImportSelector/ImportBeanDefinitionRegistrar。

使用示例

@SpringBootApplication@Import({SmsConfig.class})publicclassDemoApplication{publicstaticvoid main(String[] args) {SpringApplication.run(DemoApplication.class, args);}}

六、事務注解 @Transactional

在 Spring 中,事務有兩種實現方式,分別是編程式事務管理和聲明式事務管理兩種方式

編程式事務管理:編程式事務管理使用 TransactionTemplate 或者直接使用底層的 PlatformTransactionManager。對于編程式事務管理,spring 推薦使用 TransactionTemplate。聲明式事務管理:建立在 AOP 之上的。其本質是對方法前后進行攔截,然后在目標方法開始之前創建或者加入一個事務,在執行完目標方法之后根據執行情況提交或者回滾事務,通過 @Transactional 就可以進行事務操作,更快捷而且簡單。推薦使用

七、全局異常處理

  • @ControllerAdvice 統一處理異常

  • @ControllerAdvice 注解定義全局異常處理類

  1. @ControllerAdvice

  2. publicclassGlobalExceptionHandler{

  3. }

  4. @ExceptionHandler注解聲明異常處理方法

  5. @ControllerAdvice

  6. publicclassGlobalExceptionHandler{

  7. @ExceptionHandler(Exception.class)

  8. @ResponseBody

  9. String handleException(){

  10. return"Exception Deal!";

  11. }

  12. }

- END -

[我要糾錯]
文:王振袢&發表于江蘇
關鍵詞: 啟動 注解 @SpringBootApplication@Target ElementType.TYPE @Retention

來源:本文內容搜集或轉自各大網絡平臺,并已注明來源、出處,如果轉載侵犯您的版權或非授權發布,請聯系小編,我們會及時審核處理。
聲明:江蘇教育黃頁對文中觀點保持中立,對所包含內容的準確性、可靠性或者完整性不提供任何明示或暗示的保證,不對文章觀點負責,僅作分享之用,文章版權及插圖屬于原作者。

點個贊
0
踩一腳
0

您在閱讀:Spring Boot 這么火,常用注解和原理都給你整理好了!

Copyright?2013-2024 JSedu114 All Rights Reserved. 江蘇教育信息綜合發布查詢平臺保留所有權利

蘇公網安備32010402000125 蘇ICP備14051488號-3技術支持:南京博盛藍睿網絡科技有限公司

南京思必達教育科技有限公司版權所有   百度統計

主站蜘蛛池模板: 天天宗合网 | 国产亚洲欧美视频 | 国产精品每日更新在线观看 | 成年网站在线观看视频 | 亚洲乱码一二三四区国产 | 亚洲天天做日日做天天看2018 | 69堂午夜精品视频在线 | 日韩欧美亚洲香蕉七次郎 | 最近免费中文字幕大全免费 | 中文日本在线 | 高清国产美女一级a毛片在线 | 国产毛片a级 | 国产欧美一区视频在线观看 | 国产精品成人一区二区三区 | 国产天堂网 | 2020天堂中文字幕一区在线观 | 亚洲第一免费 | 午夜寂寞影院在线观看 | 亚洲欧美日韩高清一区二区一 | 99免费在线观看视频 | 欧美一级裸片 | 日韩美女拍拍免费视频网站 | 26uuu最新地址 | 亚洲欧美91 | 亚洲欧美国产精品第1页 | 亚洲系列中文字幕一区二区 | 国产亚洲精品国产第一 | 夜夜躁日日躁狠狠久久 | 国产片一级毛片视频 | 欧美在线小视频 | www.蜜臀 | 日韩在线视 | 丁香六月在线 | 狠狠综合| 中文字幕在线视频免费观看 | 夜色影视 | www.天天色.com | 亚洲欧洲精品国产区 | 欧美日韩 国产区 在线观看 | 免费观看a级毛片在线播放 免费观看a级完整视频 | 国产免费久久精品99 |
最熱文章
最新文章
  • 阿里云上云鉅惠,云產品享最低成本,有需要聯系,
  • 卡爾蔡司鏡片優惠店,鏡片價格低
  • 蘋果原裝手機殼