這個注解是Spring Boot最核心的注解,用在 Spring Boot的主類上,標識這是一個 Spring Boot 應用,用來開啟 Spring Boot 的各項能力。實際上這個注解是@Configuration,@EnableAutoConfiguration,@ComponentScan三個注解的組合。由于這些注解一般都是一起使用,所以Spring Boot提供了一個統一的注解@SpringBootApplication。
2、@EnableAutoConfiguration
允許 Spring Boot 自動配置注解,開啟這個注解之后,Spring Boot 就能根據當前類路徑下的包或者類來配置 Spring Bean。
如:當前類路徑下有 Mybatis 這個 JAR 包,MybatisAutoConfiguration 注解就能根據相關參數來配置 Mybatis 的各個 Spring Bean。
2020-06-18
springboot中的常用注解有:@SpringBootApplication、@Repository、@Service、@RestController、@ResponseBody、@Component、@ComponentScan等等。
1、@SpringBootApplication
這個注解是Spring Boot最核心的注解,用在 Spring Boot的主類上,標識這是一個 Spring Boot 應用,用來開啟 Spring Boot 的各項能力。實際上這個注解是@Configuration,@EnableAutoConfiguration,@ComponentScan三個注解的組合。由于這些注解一般都是一起使用,所以Spring Boot提供了一個統一的注解@SpringBootApplication。
2、@EnableAutoConfiguration
允許 Spring Boot 自動配置注解,開啟這個注解之后,Spring Boot 就能根據當前類路徑下的包或者類來配置 Spring Bean。
如:當前類路徑下有 Mybatis 這個 JAR 包,MybatisAutoConfiguration 注解就能根據相關參數來配置 Mybatis 的各個 Spring Bean。
@EnableAutoConfiguration實現的關鍵在于引入了AutoConfigurationImportSelector,其核心邏輯為selectImports方法,邏輯大致如下:
● 從配置文件META-INF/spring.factories加載所有可能用到的自動配置類;
● 去重,并將exclude和excludeName屬性攜帶的類排除;
● 過濾,將滿足條件(@Conditional)的自動配置類返回;
3、@Configuration
用于定義配置類,指出該類是 Bean 配置的信息源,相當于傳統的xml配置文件,一般加在主類上。如果有些第三方庫需要用到xml文件,建議仍然通過@Configuration類作為項目的配置主類——可以使用@ImportResource注解加載xml配置文件。
4、@ComponentScan
組件掃描。讓spring Boot掃描到Configuration類并把它加入到程序上下文。
@ComponentScan注解默認就會裝配標識了@Controller,@Service,@Repository,@Component注解的類到spring容器中。
5、@Repository
用于標注數據訪問組件,即DAO組件。
使用@Repository注解可以確保DAO或者repositories提供異常轉譯,這個注解修飾的DAO或者repositories類會被ComponetScan發現并配置,同時也不需要為它們提供XML配置項。
6、@Service
一般用于修飾service層的組件
7、@RestController
用于標注控制層組件(如struts中的action),表示這是個控制器bean,并且是將函數的返回值直 接填入HTTP響應體中,是REST風格的控制器;它是@Controller和@ResponseBody的合集。
8、@ResponseBody
表示該方法的返回結果直接寫入HTTP response body中
一般在異步獲取數據時使用,在使用@RequestMapping后,返回值通常解析為跳轉路徑,加上@responsebody后返回結果不會被解析為跳轉路徑,而是直接寫入HTTP response body中。比如異步獲取json數據,加上@responsebody后,會直接返回json數據。
9、@Component
泛指組件,當組件不好歸類的時候,我們可以使用這個注解進行標注。
10、@Bean
相當于XML中的<bean></bean>,放在方法的上面,而不是類,意思是產生一個bean,并交給spring管理。
11、@AutoWired
byType方式。把配置好的Bean拿來用,完成屬性、方法的組裝,它可以對類成員變量、方法及構造函數進行標注,完成自動裝配的工作。
當加上(required=false)時,就算找不到bean也不報錯。
12、@Qualifier
當有多個同一類型的Bean時,可以用@Qualifier("name")來指定。與@Autowired配合使用
13、@Resource(name="name",type="type")
沒有括號內內容的話,默認byName。與@Autowired干類似的事。
14、@RequestMapping
RequestMapping是一個用來處理請求地址映射的注解;提供路由信息,負責URL到Controller中的具體函數的映射,可用于類或方法上。用于類上,表示類中的所有響應請求的方法都是以該地址作為父路徑。
15、@RequestParam
用在方法的參數前面。例:
@RequestParam String a,相當于request.getParameter("a")。
16、@PathVariable
路徑變量。參數與大括號里的名字一樣要相同。
17、@Profiles
Spring Profiles提供了一種隔離應用程序配置的方式,并讓這些配置只能在特定的環境下生效。
任何@Component或@Configuration都能被@Profile標記,從而限制加載它的時機。
18、@ConfigurationProperties
Spring Boot可使用注解的方式將自定義的properties文件映射到實體bean中,比如config.properties文件。
19、@MapperScan
指定要變成實現類的接口所在的包,然后包下面的所有接口在編譯之后都會生成相應的實現類,添加位置:是在Springboot啟動類上面添加。
20、@Controller
用于標記在一個類上,使用它標記的類就是一個SpringMvc Controller對象,分發處理器會掃描使用該注解的類的方法,并檢測該方法是否使用了@RequestMapping注解。
21、@Param
地處Dao層,是為了傳遞多個參數,解決的是可讀性和直觀性。
22、@ApiModel
描述返回對象的意義,用在返回對象類上,在實體類上邊使用,標記類是swagger的解析類。
23、@ApiModelProperty
使用在被 @ApiModel 注解的模型類的屬性上,添加和操作模型屬性的數據
24、@Transactional
聲明式事務管理 編程中使用的注解,可以作用于接口、接口方法、類以及類方法上。當作用于類上時,該類的所有 public 方法將都具有該類型的事務屬性,同時,我們也可以在方法級別使用該標注來覆蓋類級別的定義。用來設置事務的傳播行為、隔離規則、回滾規則、事務超時、是否只讀。
25、@Override
偽代碼,表示重寫,Java中的。
26、@Scheduled
用來配置到方法上來完成對應的定時任務的配置,如執行時間,間隔時間,延遲時間等等,下面我們就來詳細的看下對應的屬性配置。
2020-01-26
@Resource? 類似@AutoWired? 不過實際還是@AutoWired使用比較多
@Bean 聲明方法的返回值為一個ioc管理的bean
@Component 聲明一個類的bean會被ioc容器創建并管理