spring-boot的常見的註解使用
Spring Boot是Spring框架對“約定優於配置(Convention Over Configuration)”理念的最佳實踐產物。一個典型的Spring Boot應用本質上就是一個基於Spring框架的應用。Spring Boot使用註解的方式對Bean和配置進行收集,註冊,分析和組裝。簡化了基於XML配置檔案的開發。能夠快速地構建出一個應用程式。
---------------------
作者:xiaolongleee
來源:CSDN
原文:https://blog.csdn.net/mytobaby00/article/details/81141620
版權宣告:本文為博主原創文章,轉載請附上博文連結!
1、@ComponentScan的功能其實就是自動掃描並載入符合條件的元件或Bean定義,並最終將這些Bean定義載入到容器中。其作用是:
*自動掃描路徑下邊帶有@Controller,@Service,@Repository,@Component註解加入Spring IoC容器。
*通過includeFilters加入掃描路徑下沒有以上註解的類加入spring容器。
*通過excludeFilters過濾出不用加入spring容器的類。
2、@Conditional:在Spring框架中,我們可使用@Conditional配合@Configuration或者@Bean等註解來干預一個配置或者Bean定義是否生效
@Conditional({TheCondition1.class, TheCondition2.class, ...})
3、在實現自動配置的過程中,除了基於條件配置,我們還需要提供配置或元件載入的順序,從而讓這些配置或者元件之間的依賴分析和組裝可以順利完成。
*@AutoConfigureBefore讓當前配置或元件在某個元件之前執行。
*@AutoConfigureAfter
4、在Spring Boot中,有些變數需要根據需要配置在application.properties中,那我們可以通過@Value註解讀取這些變數並注入。該註解可以注入:
*普通字串:@Value("This is a normal string") private String normalString;
*作業系統屬性:@Value("#{systemProperties['os.name']}") private String osName;
*表示式結果:@Value("#{ T(java.lang.Math).random() * 20.0 }") private double theNum;
*檔案資源:@Value("classpath:WEB-INF/spring.properties") private Resource resourceFile;
*URL資源:@Value("http://www.baidu.com") private Resource baiduUrl;
*其他Bean屬性:@Value("#{otherBean.thatProperty}") private String propertyFromOtherBean;
5、@PropertySource
*@PropertySource用於讀取指定目錄下的檔案,並載入。如:
*@PropertySource(value = {"classpath:system-config.properties"},encoding="utf-8")
6、@Autowired是Spring 3.0引入的一個註解,可以標註在類的屬性上,這樣Spring容器就會以byType的方式來注入對應的Bean。
如果某個Type實現了多個Bean,則使用@Autowired時,需要根據@Qualifier註解來指定需要注入哪個實現類。也可以採用List或Map的方式將所有實現類一起注入。如果注入的是Map,則key為該Bean的id。
7、@Resource預設按照ByName自動注入,由J2EE提供,需要匯入包javax.annotation.Resource。
@Resource有兩個重要的屬性:name和type,而Spring將@Resource註解的name屬性解析為Bean的名字,而type屬性則解析為Bean的型別。所以:
*如果使用name屬性,則使用byName的自動注入策略.
*而使用type屬性時則使用byType自動注入策略。
*如果既不制定name也不制定type屬性,這時將通過反射機制使用byName自動注入策略。
8、@Component用於將類例項化並注入IoC中。其他註解@Controller,@Service,@Respository的用法跟@Component差不多,比@Component帶有更多的語義,他們分別對應了控制層,業務層和持久層的類。
9、@RequestMapping是一個用來處理請求地址對映的註解,可用於類或方法上。用於類上,表示類中的所有響應請求的方法都是以該地址作為父路徑。 該註解有六個屬性:
*params:指定request中必須包含某些引數值是,才讓該方法處理。
*headers:指定request中必須包含某些指定的header值,才能讓該方法處理請求。
*value:指定請求的實際地址,指定的地址可以是URI Template 模式
*method:指定請求的method型別, GET、POST、PUT、DELETE等
*consumes:指定處理請求的提交內容型別(Content-Type),如application/json,text/html;
*produces:指定返回的內容型別,僅當request請求頭中的(Accept)型別中包含該指定型別才返回
10、@RequestParam該註解用在方法的引數前面。其作用就是獲取request.getParameter(方法引數)的值,並將取得的·值付給該引數。
11、@ResponseBody:使用@ResponseBody表示該方法的返回結果直接·寫入HTTP response body中
12、@RequestBody用於讀取Request請求的body部分資料,使用系統預設配置的HttpMessageConverter進行解析,然後把相應的資料繫結到要返回的物件上;再把HttpMessageConverter返回的物件資料繫結到 controller中方法的引數上。