Spring SpringMVC SpringBoot SpringCloud 注解整理大全


 

Spring SpringMVC SpringBoot SpringCloud 注解整理

才開的博客所以放了一篇以前整理的文檔,如果有需要添加修改的地方歡迎指正,我會修改的φ(๑˃∀˂๑)♪

Spring 常用配置:

  • @import :導入配置類

  • @Scope : 新建Bean的實例 @Scope("prototype") 聲明Scope 為 Prototype

  • @Value : 屬性注入

    • @Value ("我愛你") --> 普通字符串注入

    • @Value ("#{systemProperties['os.name']}") -->注入操作系統屬性

    • @Value ("#{ T (java.lang.Math).random() * 100.0 }") --> 注入表達式結果

    • @Value ("#{demoService.another}") --> 注入其他Bean屬性

    • @Value ( "classpath:com/wisely/highlight_spring4/ch2/el/test.txt" ) --> 注入文件資源

    • @Value ("http://www.baidu.com")-->注入網址資源

    • @Value ("${book.name}" ) --> 注入配置文件 注意: 使用的是$ 而不是 #

  • @PostConstruct : 在構造函數執行完之后執行

  • @PreDestroy : 在 Bean 銷毀之前執行

  • @ActiveProfiles : 用來聲明活動的 profile

  • @profile: 為不同環境下使用不同的配置提供了支持

    • @Profile("dev") .......對方法名為 dev-xxxx的方法提供實例化Bean

  • @EnableAsync : 開啟異步任務的支持(多線程)

  • @Asyns : 聲明這是一個異步任務,可以在類級別 和方法級別聲明.

  • @EnableScheduling : 開啟對計划任務的支持(定時器)

  • @Scheduled : 聲明這是一個計划任務 支持多種計划任務,包含 cron. fixDelay fixRate

    • @Scheduled (dixedDelay = 5000) 通過注解 定時更新

  • @Conditional : 條件注解,根據滿足某一特定條件創建一個特定的Bean

  • @ContextConfiguration : 加載配置文件

    • @ContextConfiguration(classes = {TestConfig.class})

    • @ContextConfiguration用來加載ApplicationContext

    • classes屬性用來加載配置類

  • @WebAppCofiguration : 指定加載 ApplicationContext是一個WebApplicationContext

spring AOP切面編程(事務)注解:

  • @Aspect : 聲明這是一個切面

  • @After @Before. @Around @AfterThrowing @AfterReturning

  • 定義切面,,可以直接將攔截規則(切入點 PointCut)作為參數

  • @PointCut : 專門定義攔截規則 然后在 @After @Before. @Around 中調用

  • @Transcational : 事務處理

  • @EnableTransactionManagement 開啟對注解式事物的支持

  • @Cacheable : 數據緩存

  • @EnableAaspectJAutoProxy : 開啟Spring 對 這個切面(Aspect )的支持

  • @Target (ElementType.TYPE):元注解,用來指定注解修飾類的那個成員 -->指定攔截規則

  • @Retention(RetentionPolicy.RUNTIME)

    • --->當定義的注解的@Retention為RUNTIME時,才能夠通過運行時的反射機制來處理注解.-->指定攔截規則

 

 

  • 聲明Bean的注解:

    • @Component : 組件,沒有明確的角色

    • @Service : 在業務邏輯層(service層)使用

    • @Repository : 在數據訪問層(dao層)使用.

    • @Controller : 在展現層(MVC--SpringMVC)使用

     

    注入Bean的注解:

    • @Aautowired : Spring提供的注解.

    • @Inject : JSR-330提供的注解

    • @Resource : JSR-250提供的注解

     

    配置文件的注解:

    • @Configuration : 聲明當前類是個配置類,相當於一個Spring配置的xml文件.

    • @ComponentScan (cn.test.demo): 自動掃描包名下所有使用 @Component @Service @Repository @Controller 的類,並注冊為Bean

    • @WiselyConfiguration : 組合注解 可以替代 @Configuration和@ComponentScan

    • @Bean : 注解在方法上,聲明當前方法的返回值為一個Bean.

    • @Bean(initMethod="aa",destroyMethod="bb")--> 指定 aa和bb方法在構造之后.Bean銷毀之前執行.

     

@Enable*注解:

  • @EnableAsync : 開啟異步任務的支持(多線程)

  • @EnableScheduling : 開啟對計划任務的支持(定時器)

  • @EnableWebMVC : 開啟對Web MVC 的配置支持

  • @EnableAaspectJAutoProxy : 開啟Spring 對 這個切面(Aspect )的支持

  • @EnableConfigurationProperties 開啟對@ConfigurationProperties注解配置Bean的支持

  • @EnableJpaRepositories : 開啟對Spring Data JAP Repository 的支持

  • @EnableTransactionManagement 開啟對注解式事物的支持

  • @EnableDiscoveryClient 讓服務發現服務器,使用服務器.Spring cloud 實現服務發現

  • @EnableEurekaServer 注冊服務器 spring cloud 實現服務注冊@

  • @EnableScheduling 定時器!讓spring可以進行任務調度,功能類似於spring.xml文件中的命名空間

  • @EnableCaching 開啟Cache緩存支持;

SpringMVC 常用注解:

  • @Controller : 注解在類上 聲明這個類是springmvc里的Controller,將其聲明為一個spring的Bean.

  • @RequestMapping :可以注解在類上和方法上 映射WEB請求(訪問路徑和參數)

  • @RequestMapping(value= "/convert",produces+{"application/x-wisely"}) 設置訪問URL 返回值類型

  • @ResponseBody : 支持將返回值放入response體內 返回json格式數據!而不是返回一個頁面(返回的是一個組數據)

  • @RequestBody : 允許request的參數在request體中,而不是直接連接在地址后面 次注解放置在參數前獲取體中的json格式數據

  • @Path Variable : 用來接收路徑參數 如/test/001,001為參數,次注解放置在參數前

  • @RestController : @Controller + @ResponseBody 組合注解

  • @ControllerAdvice : 通過@ControllerAdvice可以將對已控制器的全局配置放置在同一個位置

  • @ExceptionHandler : 用於全局處理控制器的異常

  • @ExceptionHandier(value=Exception.class) -->通過value屬性可過濾攔截器條件,攔截所有的異常

  • @InitBinder : 用來設置WebDataBinder , WebDataBinder用來自動綁定前台請求參數到Model中.

  • @ModelAttrbuute : 綁定鍵值對到Model中,

  • @RunWith : 運行器

    • @RunWith(JUnit4.class)就是指用JUnit4來運行

    • @RunWith(SpringJUnit4ClassRunner.class),讓測試運行於Spring測試環境

    • @RunWith(Suite.class)的話就是一套測試集合,

  • @WebAppConfiguration("src/main/resources") : 注解在類上,用來聲明加載的ApplicationContex 是一個WebApplicationContext ,它的屬性指定的是Web資源的位置,默認為 src/main/webapp ,自定義修改為 resource

  • @Before : 在 xxx 前初始化

  • @RequestMapping

    @RequestParam

    @ResponseBody

    @RequestBody

    @PathVariable

    @RestController

    @CookieValue

    @ModelAttributes

    @SessionAttributes

 

Spring Boot 注解:

  • @SpringBootApplication : 是Spring Boot 項目的核心注解 主要目的是開啟自動配置

    • @SpringBootApplication注解是一個組合注解,主要組合了@Configuration .+@EnableAutoConfiguration.+@ComponentScan

  • @Value : 屬性注入,讀取properties或者 Yml 文件中的屬性

  • @ConfigurationProperties : 將properties屬性和一個Bean及其屬性關聯,從而實現類型安全的配置

    • @ConfigurationProperties(prefix = "author",locations = {"classpath:config/author.properties"})

    • 通過@ConfigurationProperties加載配置,通過prefix屬性指定配置前綴,通過location指定配置文件位置

  • @EnableAutoConfiguration 注解:作用在於讓 Spring Boot 根據應用所聲明的依賴來對 Spring 框架進行自動配置 這個注解告訴Spring Boot根據添加的jar依賴猜測你想如何配置Spring。由於spring-boot-starter-web添加了Tomcat和Spring MVC,所以auto-configuration將假定你正在開發一個web應用並相應地對Spring進行設置。

  • @ Configuration 注解,以明確指出該類是 Bean 配置的信息源

  • @ComponentScan 注解會告知Spring掃描指定的包來初始化Spring Bean這能夠確保我們聲明的Bean能夠被發現。

  • @ImportResource 注解加載XML配置文件

  • @EnableAutoConfiguration(exclude={xxxx.class}) 禁用特定的自動配置

  • @SpringBootApplication 注解等價於以默認屬性使用@Configuration,@EnableAutoConfiguration和 @ComponentScan。

 

 

@SuppressWarnings注解

  • @SuppressWarnings("unchecked")

    • 告訴編譯器忽略 unchecked 警告信息,如使用 list ArrayList等未進行參數化產生的警告信息

  • @SuppressWarnings("serial")

    • 如果編譯器出現這樣的警告信息: The serializable class WmailCalendar does not declare a static final serialVersionUID field of type long 使用這個注釋將警告信息去掉。

  • @SuppressWarnings("deprecation")

    • 如果使用了使用@Deprecated注釋的方法,編譯器將出現警告信息。使用這個注釋將警告信息去掉。

  • @SuppressWarnings("unchecked", "deprecation")

    • 告訴編譯器同時忽略unchecked和deprecation的警告信息。

  • @SuppressWarnings(value={"unchecked", "deprecation"})

    • 等同於@SuppressWarnings("unchecked", "deprecation")

案例

@Entity : 映射數據庫實體類

@Table(name ="S_PRODUCEINFO") : 表名為 "S_PRODUCEINFO"

@Id : 聲明主鍵ID

@Column(name ="app_name", unique =**true**, length = 50) :對應數據庫字段,屬性

@Enumerated(EnumType.**STRING**) : 采用枚舉值類型和數據庫字段進行交互

@Temporal : 時間格式 映射數據庫會得到規定時間格式的日期

•       @Enumerted(EnumType.STRING) HH:MM:SS 格式的日期

•     @Enumerted(EnumType.DATE) 獲取年月日 yyyy-MM-dd

•       @Enumerted(EnumType.TIME) 獲取時分秒 HH:MM:SS

•                                              

springcloud 常用 注解

  • @Controller 控制層,里面有多個連接
  • @Service 業務層,一般對於接口和實現
  • @Qualifier 如果一個接口有多個實現,那么注入時候加上唯一標示
  • @Repository 一般的dao層
  • @Autowired 自動注入依賴
  • @Resource bean的注入,同Autowired 有相同的功能。
  • @Resource和@Autowired區別說明:

共同點:@Resource和@Autowired都可以作為注入屬性的修飾,在接口僅有單一實現類時,兩個注解的修飾效果相同,可以互相替換,不影響使用。

不同點: @Resource是Java自己的注解,@Resource有兩個屬性是比較重要的,分是name和type;Spring將@Resource注解的name屬性解析為bean的名字,而type屬性則解析為bean的類型。所以如果使用name屬性,則使用byName的自動注入策略,而使用type屬性時則使用byType自動注入策略。如果既不指定name也不指定type屬性,這時將通過反射機制使用byName自動注入策略。 @Autowired是spring的注解,是spring2.5版本引入的,Autowired只根據type進行注入,不會去匹配name。如果涉及到type無法辨別注入對象時,那需要依賴@Qualifier或@Primary注解一起來修飾。

  • @Component定義其它組件(比如訪問外部服務的組件)
  • @RequestMapping (value=’’,method={RequestMethod。GET或者POSt})綁定url
  • @RequestParam (value=’’ required=false)綁定參數,將客戶端請求中的參數值映射到相應方法的參數上;
  • @ModelAttribute 一般用於controller層,唄注解的方法會在所以mapping執行之前執行,並且可以綁定參數到Model model里面。
  • @Transactional (readOnly=true)注解式事務
  • @TransactionalEventListener用於配置事務的回調方法,可以在事務提交前、提交后、完成后以及回滾后幾個階段接受回調事件。
  • @Value(“${}”)可以注入properties里面的配置項
  • @ControllerAdvice 是spring3提供的新注解
  • @ExceptionHandler 如果在controller方法遇到異常,就會調用含有此注解的方法。
  • @InitBinder 一般用於controller 可以將所以form 講所有傳遞進來的string 進行html編碼,防止xss攻擊,比如可以將字符串類型的日期轉換成date類型
  • @EnableCaching 注解自動化配置合適的緩存管理器。
  • @EnableWebSecurity 注解開啟spring security的功能,集成websercrityconfigureadapter。
  • @SringBootApplication相當於@configuration,@EnableAutoConfiguation @ComponentScan三個注解合用。
  • @EnableDiscoveryclient 注冊應用為Eureka客戶端應用,以獲得服務發現的能力
  • @EnableAdminServer 使用admin監控應用。
  • @EnableEurekaClient配置本應用將使用服務注冊和服務發現,注意:注冊和發現用這個注解。
  • @EnableEurekaServer 啟動一個服務注冊中心 @EnableHystrix表示啟動斷路器,斷路器依賴於服務注冊和發現。
  • @HystrixCommand注解方法失敗后,系統將西東切換到fallbackMethod方法執行。指定回調方法
  • @EnableCircuitBreaker//對hystrixR熔斷機制的支持
  • @EnableAutoConfiguration spring boot自動配置,嘗試根據你添加的jar依賴自動配置你的spring應用。
  • @ComponentScan 表示將該類自動發現並注冊bean 可以自動收集所有的spring組件
  • @Comfiguration 相當於傳統的xml配置文件
  • @EnableHystrixDashboard//啟動hystrix Board 服務監控
  • @Import 導入其他配置類
  • @ImportResource用來 加載xml配置文件
  • @RestController 返回json字符串的數據,直接可以編寫RESTFul的接口;
  • @CrossOrigin 可以處理跨域請求,讓你能訪問不是一個域的文件;
  • @ApiOperation 首先@ApiOperation注解不是Spring自帶的,它是是swagger里的注解@ApiOperation是用來構建Api文檔的@ApiOperation(value = “接口說明”, httpMethod = “接口請求方式”, response = “接口返回參數類型”, notes = “接口發布說明”;
  • @SpringBootApplication  申明讓spring boot自動給程序進行必要的配置,等價於以默認屬性使用@Configuration,@EnableAutoConfiguration和@ComponentScan; @RefreshScope 如果代碼中需要動態刷新配置,在需要的類上加上該注解就行。但某些復雜的注入場景下,這個注解使用不當,配置可能仍然不動態刷新;
  • @FeignClient springboot調用外部接口:聲明接口之后,在代碼中通過@Resource注入之后即可使用。
  • @FeignClient標簽的常用屬性如下:name:指定FeignClient的名稱,如果項目使用了Ribbon,name屬性會作為微服務的名稱,用於服務發現
  • @FeignClient注解中的fallbank屬性指定回調類
  • @EnableFeignClients 開啟Spring Cloud Feign的支持
  • @EnableCircuitBreaker 開啟斷路器功能
  • @LoadBalanced 開啟客戶端負載均衡
  • @WebAppConfiguration 開啟Web 應用的配置,用於模擬ServletContext
  • @RibbonClient,這個注解用來為負載均衡客戶端做一些自定義的配置,可以進一步配置或自定義從哪里獲取服務端列表、負載均衡策略、Ping也就是服務鑒活策略等等

Lombok提供注解方式

目的:來提高代碼的簡潔性,常用注解概覽:

    • @Data:注解在類上;提供類所有屬性的 getting 和 setting 方法,此外還提供了equals、canEqual、hashCode、toString 方法,相當於同時加上以下注解@Setter @Getter,@ToString,@EqualsAndHashCode

    • @Setter、@Getter:注解在類和屬性上;為屬性提供 setting、getting 方法

    • @ToString:生成toString方法,默認情況下,會輸出類名、所有屬性,屬性按照順序輸出,以逗號分割。

    • @EqualsAndHashCode:實現equals()方法和hashCode()方法

    • *@Builder:構建 建造者模式*

    • @NonNull:該注解快速判斷是否為空,如果為空,則拋出java.lang.NullPointerException

    • @Synchronized:該注解自動添加到同步機制,有趣的是,生成的代碼並不是直接鎖方法,而是鎖代碼塊, 作用范圍是方法上

    • @Log4j :注解在類上;為類提供一個 屬性名為log 的 log4j 日志對象

    • *@NoArgsConstructor:注解在類上;為類提供一個無參的構造方法*

    • @RequiredArgsConstructor:注解在類上;為類提供一個部分參的構造方法(使用類中所有帶有@NonNull注解的或者帶有final修飾的成員變量生成對應的構造方法)

    • *@AllArgsConstructor:注解在類上;為類提供一個全參的構造方法*

    • @Cleanup:用於確保已分配的資源被釋放,如IO的連接關閉

    • @SneakyThrows:拋異常

    • @Accessors(chain = true):使用鏈式結構


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM