1、@SpringBootApplication
在使用 Springboot 框架進(jìn)行開(kāi)發(fā)的時(shí)候,通常我們會(huì)在 main 函數(shù)上添加 @SpringBootApplication 注解
首先看一下“SpringBootApplication”源碼,

@SpringBootApplication是@Configuration@EnableAutoConfiguration@ComponentScan三個(gè)標(biāo)簽功能的集合
@Configuration:表示將該類作用springboot配置文件類。
@EnableAutoConfiguration:表示程序啟動(dòng)時(shí),自動(dòng)加載springboot默認(rèn)的配置。
@ComponentScan:表示程序啟動(dòng)是,自動(dòng)掃描當(dāng)前包及子包下所有類。
2、@EnableDiscoveryClient ?&& @EnableEurekaClient
@EnableDiscoveryClient與@EnableEurekaClient都是服務(wù)發(fā)現(xiàn)的注解,區(qū)別在于@EnableDiscoveryClient基于spring-cloud-commons, @EnableEurekaClient基于spring-cloud-netflix。
就是如果選用的注冊(cè)中心是eureka,那么就推薦@EnableEurekaClient,如果是其他的注冊(cè)中心,那么推薦使用@EnableDiscoveryClient。
3、@EnableScheduling
通過(guò)@EnableScheduling注解開(kāi)啟對(duì)計(jì)劃任務(wù)的支持
4、@MapperScan
通過(guò)使用@MapperScan可以指定要掃描的Mapper類的包的路徑
5、@EnableSwagger2Doc
????用于自動(dòng)生成api文檔
6、@target(用于定義注解)
用于設(shè)定注解使用范圍
7、@Retention(用于定義注解)
????定義了該Annotation被保留的時(shí)間長(zhǎng)短:某些Annotation僅出現(xiàn)在源代碼中,而被編譯器丟棄;而另一些卻被編譯在class文件中;編譯在class文件中的Annotation可能會(huì)被虛擬機(jī)忽略,而另一些在class被裝載時(shí)將被讀?。ㄕ?qǐng)注意并不影響class的執(zhí)行,因?yàn)锳nnotation與class在使用上是被分離的)。使用這個(gè)meta-Annotation可以對(duì) Annotation的“生命周期”限制。
8、@Documented注解
? ? @Documented注解表明這個(gè)注釋是由 javadoc記錄的
9、@Inherited
@Inherited 元注解是一個(gè)標(biāo)記注解,@Inherited闡述了某個(gè)被標(biāo)注的類型是被繼承的。?
如果一個(gè)使用了@Inherited修飾的annotation類型被用于一個(gè)class,則這個(gè)annotation將被用于該class的子類。
10、@EnableTransactionManagement
spring boot 的事務(wù)管理標(biāo)簽
11、@Service、@Controller、@Repository
@Service用于標(biāo)注業(yè)務(wù)層組件,@Controller用于標(biāo)注控制層組件(如struts中的action),@Repository用于標(biāo)注數(shù)據(jù)訪問(wèn)組件,即DAO組件,而@Component泛指組件,當(dāng)組件不好歸類的時(shí)候,我們可以使用這個(gè)注解進(jìn)行標(biāo)注
13、@table ?、@Id、@Column
? ? @table實(shí)體類映射數(shù)據(jù)庫(kù)表,@Id映射主鍵,@Column映射列
14、@RequestMapping
@RequestMapping是一個(gè)用來(lái)處理請(qǐng)求地址映射的注解,可用于類跟方法
15、@Autowired
自動(dòng)注入,相當(dāng)于xxx x = new xxx();與他類似的標(biāo)簽還有@Resource,兩者之間的區(qū)別就不細(xì)講了
16、@Responsebody
@Responsebody 注解表示該方法的返回的結(jié)果直接寫入 HTTP 響應(yīng)正文(ResponseBody)中,一般在異步獲取數(shù)據(jù)時(shí)使用,通常是在使用 @RequestMapping 后,返回值通常解析為跳轉(zhuǎn)路徑,加上 @Responsebody 后返回結(jié)果不會(huì)被解析為跳轉(zhuǎn)路徑,而是直接寫入HTTP 響應(yīng)正文中。?
如果返回值是html標(biāo)簽的頁(yè)面,就不要使用他;
17、@PathVariable、@RequestParam, @RequestBody
三者都是獲取發(fā)送參數(shù)的方法,區(qū)別在于:
@Pathvariable
當(dāng)使用@RequestMapping URI template 樣式映射時(shí), 即 someUrl/{paramId}, 這時(shí)的paramId可通過(guò) @Pathvariable注解綁定它傳過(guò)來(lái)的值到方法的參數(shù)上。

@RequestParam?
A) 常用來(lái)處理簡(jiǎn)單類型的綁定,通過(guò)Request.getParameter() 獲取的String可直接轉(zhuǎn)換為簡(jiǎn)單類型的情況( String--> 簡(jiǎn)單類型的轉(zhuǎn)換操作由ConversionService配置的轉(zhuǎn)換器來(lái)完成);因?yàn)槭褂胷equest.getParameter()方式獲取參數(shù),所以可以處理get 方式中queryString的值,也可以處理post方式中 body data的值;
B)用來(lái)處理Content-Type: 為application/x-www-form-urlencoded編碼的內(nèi)容,提交方式GET、POST;
C) 該注解有兩個(gè)屬性: value、required; value用來(lái)指定要傳入值的id名稱,required用來(lái)指示參數(shù)是否必須綁定;
@RequestBody
該注解常用來(lái)處理Content-Type: 不是application/x-www-form-urlencoded編碼的內(nèi)容,例如application/json, application/xml等;
它是通過(guò)使用HandlerAdapter 配置的HttpMessageConverters來(lái)解析post data body,然后綁定到相應(yīng)的bean上的。
因?yàn)榕渲糜蠪ormHttpMessageConverter,所以也可以用來(lái)處理application/x-www-form-urlencoded的內(nèi)容,處理完的結(jié)果放在一個(gè)MultiValueMap里,這種情況在某些特殊需求下使用