經常使用註解整理

Spring 註解

@RequestMapping 是接受前臺請求url的,在class和方法上均可以使用。java

@ResponseBody 將返回的對象經過轉換器轉換成JSON或XML的形式返回。會將數據寫入到response對象的body區中。spring

@RequestBody   接受參數時使用數據庫

@Autowired  至關於一個get方法,完成自動裝配動做,將組件掃描獲得的bean和他們的依賴裝配在一塊兒。與@Resource相似,對成員變量,方法,構造函數進行標註,來完成自動裝配的工做。只按照byType的策略進行注入。默認狀況下它要求依賴對象必須存在,若是容許null只,能夠設置它的required屬性爲false.若是想按照byName來進行注入,可結合@Qualifier一塊兒使用。緩存

@Bean   產生bean,並放在Spring容器當中,通暢放在方法上。主要用在@Configuration中,也可用在@Component中。 用來代替 XML 配置文件裏面的 <bean ...> 配置。併發

@Target  用於自定義註解,經過ElementType來指定註解可以使用範圍的枚舉集合 app

@Repository  註解可標記在任何類上,用來代表該類是用來執行數據庫相關操做的,並支持自動處理操做數據庫產生的異常。框架

@Resource     作bean依賴注入時候使用,可是@Resource並非spring的註解,它的包是javax.annotation.Resource,須要導入,Spring支持。默認按照 byName自動注入。有兩個重要屬性,name&type,Spring將@Resource註解的name屬性解析爲bean的名字,而type屬性解析爲bean的 類型。因此,若是使用name屬性,則使用byName的自動注入策略,而是用type屬性時,則使用buType的自動注入策略。若是既不指定 name,也不指定type,默認name。 裝配順序:jvm

  1. 若是同時指定了name和type,則從Spring上下文中找到惟一匹配的bean進行裝配,找不到則拋異常。
  2. 若是指定了name,則從上下文查找名稱(id)匹配的bean進行裝配,找不到則拋異常。
  3. 若是指定了type,則從上下文查找相似匹配的惟一bean進行裝配,找不到或找到多個,拋異常。
  4. 若是既沒有指定name也沒指定type,則按照byName的方式去裝配,若是沒有匹配,則回退爲一個原始類型進行匹配,匹配則自動裝配。

@Cacheable   能夠標記在一個方法上,也能夠標記在類上。標記方法上時表示該方法是支持緩存的,當標記在一個類上時,表示該類下全部的方法都支持緩存。Spring緩存經過鍵值對存儲。@Cacheable可指定三個屬性,value,key,condition.  condition指定發生的條件。Spring每次執行前都會檢查一下cache中是否有相同的key的緩存元素,若是存在就再也不執行該方法,而是從緩存中獲取結果進返回,不然纔會執行,並將結果存入指定緩存中。函數

@CachePut      與@Cacheable相同,也可聲明一個方法支持緩存功能,可是不會在執行前去緩存中檢查有沒有以前執行過的結果,而是每次都會執行該方法並將執行結果以鍵值對的形式 存放到指定緩存中。ui

@CacheEvict     是用來標註在須要清除緩存元素的方法或類上的。當標記在一個類上時表示其中全部的方法的執行都會觸發緩存的清除操做。@CacheEvict能夠指定的屬性有value、key、condition、allEntries和beforeInvocation。其中value、key和condition的語義與 @Cacheable對應的屬性相似。即value表示清除操做是發生在哪些Cache上的(對應Cache的名稱); key表示須要清除的是哪一個key,如未指定則會使用默認策略生成的key;condition表示清除操做發生的條件。 allEntries是boolean類型,表示是否須要清除緩存中的全部元素。默認爲false,表示不須要。當指定了allEntries爲true時,SpringCache將忽略指定的key。有的時候咱們須要Cache一下清除全部的元素,這比一個一個清除元素更有效率; 清除操做默認是在對應方法成功執行以後觸發的,即方法若是由於拋出異常而未能成功返回時也不會觸發清除操做。使用beforeInvocation能夠改變觸發清除操做的時間,當咱們指定該屬性值爲true時,Spring會在調用該方法以前清除緩存中的指定元素;

@Caching         可讓咱們在一個方法或者類上同時指定多個Spring Cache相關的註解。其擁有三個屬性:cacheable、put和evict,分別用於指定@Cacheable、@CachePut和@CacheEvict。

@PersistJobDataAfterExecution    告訴Quartz在任務執行成功完畢以後(沒有拋出異常),修改JobDetail的JobDataMap備份,以供下一個任務使用。若是使用了該註解的話,強烈建議同時使用@DisallowConcurrenExecution註解,以免兩個一樣的job併發執行的時候產生的存儲數據迷惑。

@DisallowConcurrenExecution        能夠添加到你的任務類中,它會告訴Quartz不要執行多個任務實例。

@ModelAttribute    Spring MVC 在調用目標處理方法前,會先逐個調用在方法級上標註了 @ModelAttribute 的方法。 在方法的入參前使用 @ModelAttribute 註解: -能夠從隱含對象中獲取隱含的模型數據中獲取對象,再將請求參數–綁定到對象中,再傳入入參;

@Retention()   自定義註解,有三種狀態RetentionPolicy.SOURCE,  RetentionPolicy.CLASS,   RetentionPolicy.RUNTIME。 SOURCE 註解只保留在源文件,當java編譯成class文件時,註解被拋棄。 CLASS 註解被保留到CLASS文件中,但jvm加載class時被遺棄,這是默認的聲明週期。 RUNTIME 註解不只被保留到class文件中,jvm加載class文件後,仍然存在。

@Inject 實現依賴注入,把受管理的bean注入到由容器管理的其餘資源中。

@Entity   說明這個class是一個實體類,而且默認使用orm的規則,即class名即爲數據庫對應表名,class字段名對於表中字段名。@Entity也指明這是一個實體Bean。

@EneityScan 會自動掃描指定包下的所有標有@Entity 的類。

@SpringBootApplication 該類爲 spring boot 項目啓動類中的核心註解。用於Spring boot的開啓,該註解由三個註解組成

  • @Configuration
  • @ComponentScan
  • @EnableAutoConfiguration

前兩個是Spring 自帶的,最後一個是Spring Boot核心的註解。源碼以下

@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
@SpringBootConfiguration
@EnableAutoConfiguration
@ComponentScan(excludeFilters = {
@Filter(type = FilterType.CUSTOM, classes = TypeExcludeFilter.class),        
@Filter(type = FilterType.CUSTOM, classes = AutoConfigurationExcludeFilter.class) })
public @interface SpringBootApplication {    ...}
複製代碼

@Configuration

org.springframework.context.annotation.Configuration

這是Spring 3.0 添加的一個註解,用來代替applicationContext.xml 配置文件,全部這個配置文件裏面能作到的事情均可以經過這個註解所在類進行註冊。(注意:該註解是Spring Boot最核心的註解之一!!!)

@ImportResource
若是有些類的註冊方式配置不了的,能夠經過這個註解引入額外的XML配置文件,有些老的配置文件沒法經過@Configuration方式配置的很是管用。

@Import 用來引用額外的一個或多個@Configuration修飾的配置文件類。

@SpringBootConfiguration 這個註解就是 @Configuration註解的變體,只是用來修飾是Spring Boot配置而已,或者可利於Spring boot 後續的擴展,源碼以下

@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Configuration
public @interface SpringBootConfiguration {}
複製代碼

@ComponentScan

org.springframework.context.annotation.ComponentScan

這是Spring 3.1 添加的一個註解,用來代替配置文件中的component-sacn 配置,開啓組件掃描,即自動掃描包路徑下的@Component 註解進行註冊bean實例到context中。 另外,@CompontentScans 是可重複註解,便可以配置多個,用來配置註冊不一樣的子包。(注意:該註解是Spring Boot最核心的註解之一!!!)

Spring 是一個依賴注入的框架。全部的內容都是關於bean的定義和其依賴關係。 定義Spring的第一步是使用正確的註解:@ComponentScan @Service @Repository 可是,Spring不知道你定義了某個bean,除非他知道哪裏能找到這個bean。 ComponentScan 作的事情就是告訴Spring從哪裏找到bean。 由你來定義哪些包須要被掃描。一旦你指定了,Spring將會在被指定的包及其下級的包中尋找bean。

ComponentScan 和 Component 的區別(它們使用的目的不同):

  • 在某個類上使用@Component註解,就表示當須要建立類時,這個被註解的類是一個候選類。就是舉手
  • @ComponentScan 用於掃描指定包下的類,就像看一下哪些類舉手了

@EnableAutoConfiguration

org.springframework.boot.autoconfigure.EnableAutoConfiguration

看全路徑就知道,這是Spring boot 誕生時添加的註解,用來提供自動配置,上面的兩個都是spring-context 包下的,不屬於Spring boot ,因此Spring 3.0 以後的去XML配置方式已經爲Spring boot埋下了伏筆。(注意:該註解是Spring Boot最核心的註解之一!!!)

@Component 把普通pojo實例化到spring容器中,至關於配置文件中的 。 泛指各類組件,就是說當咱們的類不屬於各類歸類的時候(不屬於@Controller、@Services等的時候),咱們就可使用@Component來標註這個類。

相關文章
相關標籤/搜索