1、@SpringBootApplication
在使用 Springboot 框架進行開發的時候,通常我們會在 main 函數上添加 @SpringBootApplication 注解
首先看一下“SpringBootApplication”源碼,
@SpringBootApplication是@Configuration@EnableAutoConfiguration@ComponentScan三個標簽功能的集合
@Configuration:表示將該類作用springboot配置文件類。
@EnableAutoConfiguration:表示程序啟動時,自動加載springboot默認的配置。
@ComponentScan:表示程序啟動是,自動掃描當前包及子包下所有類。
2、@EnableDiscoveryClient ?&& @EnableEurekaClient
@EnableDiscoveryClient與@EnableEurekaClient都是服務發現的注解,區別在于@EnableDiscoveryClient基于spring-cloud-commons, @EnableEurekaClient基于spring-cloud-netflix。
就是如果選用的注冊中心是eureka,那么就推薦@EnableEurekaClient,如果是其他的注冊中心,那么推薦使用@EnableDiscoveryClient。
3、@EnableScheduling
通過@EnableScheduling注解開啟對計劃任務的支持
4、@MapperScan
通過使用@MapperScan可以指定要掃描的Mapper類的包的路徑
5、@EnableSwagger2Doc
????用于自動生成api文檔
6、@target(用于定義注解)
用于設定注解使用范圍
7、@Retention(用于定義注解)
????定義了該Annotation被保留的時間長短:某些Annotation僅出現在源代碼中,而被編譯器丟棄;而另一些卻被編譯在class文件中;編譯在class文件中的Annotation可能會被虛擬機忽略,而另一些在class被裝載時將被讀?。ㄕ堊⒁獠⒉挥绊慶lass的執行,因為Annotation與class在使用上是被分離的)。使用這個meta-Annotation可以對 Annotation的“生命周期”限制。
8、@Documented注解
? ? @Documented注解表明這個注釋是由 javadoc記錄的
9、@Inherited
@Inherited 元注解是一個標記注解,@Inherited闡述了某個被標注的類型是被繼承的。?
如果一個使用了@Inherited修飾的annotation類型被用于一個class,則這個annotation將被用于該class的子類。
10、@EnableTransactionManagement
spring boot 的事務管理標簽
11、@Service、@Controller、@Repository
@Service用于標注業務層組件,@Controller用于標注控制層組件(如struts中的action),@Repository用于標注數據訪問組件,即DAO組件,而@Component泛指組件,當組件不好歸類的時候,我們可以使用這個注解進行標注
13、@table ?、@Id、@Column
? ? @table實體類映射數據庫表,@Id映射主鍵,@Column映射列
14、@RequestMapping
@RequestMapping是一個用來處理請求地址映射的注解,可用于類跟方法
15、@Autowired
自動注入,相當于xxx x = new xxx();與他類似的標簽還有@Resource,兩者之間的區別就不細講了
16、@Responsebody
@Responsebody 注解表示該方法的返回的結果直接寫入 HTTP 響應正文(ResponseBody)中,一般在異步獲取數據時使用,通常是在使用 @RequestMapping 后,返回值通常解析為跳轉路徑,加上 @Responsebody 后返回結果不會被解析為跳轉路徑,而是直接寫入HTTP 響應正文中。?
如果返回值是html標簽的頁面,就不要使用他;
17、@PathVariable、@RequestParam, @RequestBody
三者都是獲取發送參數的方法,區別在于:
@Pathvariable
當使用@RequestMapping URI template 樣式映射時, 即 someUrl/{paramId}, 這時的paramId可通過 @Pathvariable注解綁定它傳過來的值到方法的參數上。
@RequestParam?
A) 常用來處理簡單類型的綁定,通過Request.getParameter() 獲取的String可直接轉換為簡單類型的情況( String--> 簡單類型的轉換操作由ConversionService配置的轉換器來完成);因為使用request.getParameter()方式獲取參數,所以可以處理get 方式中queryString的值,也可以處理post方式中 body data的值;
B)用來處理Content-Type: 為application/x-www-form-urlencoded編碼的內容,提交方式GET、POST;
C) 該注解有兩個屬性: value、required; value用來指定要傳入值的id名稱,required用來指示參數是否必須綁定;
@RequestBody
該注解常用來處理Content-Type: 不是application/x-www-form-urlencoded編碼的內容,例如application/json, application/xml等;
它是通過使用HandlerAdapter 配置的HttpMessageConverters來解析post data body,然后綁定到相應的bean上的。
因為配置有FormHttpMessageConverter,所以也可以用來處理application/x-www-form-urlencoded的內容,處理完的結果放在一個MultiValueMap里,這種情況在某些特殊需求下使用