javascript
Spring Boot 最核心的 3 个注解详解
最近面試一些 Java 開發者,他們其中有些在公司實際用過 Spring Boot, 有些是自己興趣愛好在業余自己學習過。
然而,當我問他們 Spring Boot 最核心的 3 個注解是什么,令我失望的是鮮有人能答上來,這樣你能說你對 Spring Boot 很了解嗎?這可能還會給你減分!
?
你所需具備的基礎
-
什么是 Spring Boot?
-
Spring Boot 核心配置文件詳解
-
Spring Boot 開啟的 2 種方式
-
Spring Boot 自動配置原理、實戰
-
Spring Boot 2.x 啟動全過程源碼分析
?
Spring Boot 核心注解講解
Spring Boot 最大的特點是無需 XML 配置文件,能自動掃描包路徑裝載并注入對象,并能做到根據 classpath 下的 jar 包自動配置。
所以 Spring Boot 最核心的 3 個注解就是:
1、@Configuration
org.springframework.context.annotation.Configuration
這是 Spring 3.0 添加的一個注解,用來代替 applicationContext.xml 配置文件,所有這個配置文件里面能做到的事情都可以通過這個注解所在類來進行注冊。
下面幾個相關注解也是非常重要的!
@Bean
用來代替 XML 配置文件里面的?<bean ...>?配置。
@ImportResource
如果有些通過類的注冊方式配置不了的,可以通過這個注解引入額外的 XML 配置文件,有些老的配置文件無法通過?@Configuration?方式配置的非常管用。
@Import
用來引入額外的一個或者多個?@Configuration?修飾的配置文件類。
@SpringBootConfiguration
這個注解就是?@Configuration?注解的變體,只是用來修飾是 Spring Boot 配置而已,或者可利于 Spring Boot 后續的擴展,源碼如下。
@Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME) @Documented @Configuration public?@interface?SpringBootConfiguration?{}2、@ComponentScan
org.springframework.context.annotation.ComponentScan
這是 Spring 3.1 添加的一個注解,用來代替配置文件中的?component-scan?配置,開啟組件掃描,即自動掃描包路徑下的?@Component?注解進行注冊 bean 實例到 context 中。
另外,@ComponentScans?是可重復注解,即可以配置多個,用來配置注冊不同的子包。
關于重復注解,大家可以看這篇文章《JAVA元注解@interface詳解》。
3、@EnableAutoConfiguration
org.springframework.boot.autoconfigure.EnableAutoConfiguration
看全路徑就知道,這是自 Spring Boot 誕生時添加的注解,用來提供自動配置,上面的兩個都是?spring-context?包下的,不屬于 Spring Boot,所以 Spring 3.0 之后的去 XML 配置方式已經為 Spring Boot 埋下了伏筆!
自動配置更多詳細使用及實戰可以看這篇文章《Spring Boot自動配置原理、實戰》。
?
最后的彩蛋
Spring Boot 最核心的 3 個注解介紹完了,大家可能會有疑問,為什么最主要的注解?@SpringBootApplication?不在其中?
留給大家的彩蛋,其實這個?@SpringBootApplication?注解就包含了以上 3 個主要注解,平時沒有自定義配置的需求,則使用?@SpringBootApplication?注解完全就可以了!
讓我們來看下?@SpringBootApplication?注解的源碼,一切明了!
@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?{...}看完漲姿勢了嗎?
總結
以上是生活随笔為你收集整理的Spring Boot 最核心的 3 个注解详解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 初窥Go module
- 下一篇: Flowable最新版(6.4) 新特性