Spring Boot 是一個可以輕松創(chuàng)建獨立的、生產(chǎn)級的基于 Spring 的應(yīng)用程序的框架,Spring Boot 框架將 Spring、MyBatis、SpringMVC 中的一系列配置進行了簡化,只需要使用最簡單的配置和注解就能快速開發(fā)應(yīng)用程序。通過官網(wǎng)提供的 Spring Initializr 插件可以快速生成 Spring Boot 應(yīng)用。
網(wǎng)站設(shè)計制作過程拒絕使用模板建站;使用PHP+MYSQL原生開發(fā)可交付網(wǎng)站源代碼;符合網(wǎng)站優(yōu)化排名的后臺管理系統(tǒng);成都做網(wǎng)站、成都網(wǎng)站制作收費合理;免費進行網(wǎng)站備案等企業(yè)網(wǎng)站建設(shè)一條龍服務(wù).我們是一家持續(xù)穩(wěn)定運營了10多年的創(chuàng)新互聯(lián)網(wǎng)站建設(shè)公司。什么是自動裝配
Spring Boot 相比于 Spring 的一個很大進步點在于不用再手動配置一系列配置文件,Spring Boot 提供了配置應(yīng)用程序和框架所需要的基本配置,這就是自動配置。
Spring Boot 啟動器
Spring Boot 中的一系列啟動器是自動裝配的最佳實踐。比如當引入了一個 spring-boot-starter-web 依賴:
org.springframework.boot spring-boot-starter-web
Spring Boot 框架就會自動引入 web 環(huán)境所有的依賴,并且自動配置,Spring Boot 將所有的功能場景,都變成一個個啟動器,想要用什么功能,只需要找到對應(yīng)的啟動器就可以了。
Spring Boot 的所有啟動器可以在官網(wǎng)https://docs.spring.io/spring-boot/docs/current/reference/html/using-spring-boot.html#using-boot-starter中找到,下圖是所有啟動器中的一小部分:
自動裝配原理分析
Spring Boot 的主程序也可以稱為啟動類,這是開啟 Spring Boot 項目的入口。查看源代碼推薦使用 IDEA。
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class SpringbootdemoApplication {public static void main(String[] args) {SpringApplication.run(SpringbootdemoApplication.class, args);
}
}
@SpringBootApplication 注解標注這個類是一個 SpringBoot 的啟動類,這個注解也是自動裝配的核心。
@Target、Retention、Documented、Inherited 四個注解是標準的元注解,核心在于@SpringBootConfiguration和@EnableAutoConfiguration這兩個注解。
通過繼續(xù)進入注解內(nèi)部,可以將@SpringBootConfiguration和@EnableAutoConfiguration這兩個注解的結(jié)構(gòu)表示出來:
@SpringBootConfiguration : Spring Boot 的配置
@Configuration : Spring 配置類
@Component : Spring 的組件
@EnableAutoConfiguration : 自動配置
@AutoConfigurationPackage : 自動配置包
@Import({Registrar.class}) : 自動配置包注冊
@Import({AutoConfigurationImportSelector.class}) : 導入選擇器
@SpringBootConfiguration 聲明了這個類為 SpringBoot 的組件,@EnableAutoConfiguration 是自動配置的核心,其中@AutoConfigurationPackage 對配置包冊,AutoConfigurationImportSelector 類來進行自動裝配。
繼續(xù)來看看 AutoConfigurationImportSelector 這個類
引入環(huán)境。
引入 bean 加載器。
引入資源加載器。
配置導入。
繼續(xù)向下看,selectImports 中 的getAutoConfigurationEntry 方法第 123 行代碼將所有的配置通過 getCandidateConfigurations 方法放進一個 List 集合中
繼續(xù)進入 getCandidateConfigurations 方法,這個配置獲取的路徑是 EnableAutoConfiguration.class,也就是@SpringBootApplication 所依賴的兩個重要注解的其中一個。這段代碼最終想表達的意思是將啟動類下的所有配置都導入。
進入 LoadFactoryNames 或者就從 Assert.notEmpty 的信息中,可以發(fā)現(xiàn)這些配置來自于 META-INF/spring.factories 中,從 jar 包中可以查看到具體的目錄結(jié)構(gòu)
在 spring.factories 文件中存在大量 xxxAutoConfiguration,這個文件記錄了所有 starter 的自動裝配類,就是這些類在容器中導入了場景需要的所有組件;并通過 @Configuration 自動配置
通過一張圖來總結(jié)一下自動裝配的原理,通過上面對源碼的分析,可以看出 SpringBoot 所有的自動配置都在啟動類中被掃描和加載。所有的自動配置類都在 spring.properties 中。
自動裝配總結(jié)起來可以分為以下幾步:
Spring Boot 在啟動的時候,從類路徑下/META-INF/spring.factories 獲取指定的值;
將這些自動配置的類導入容器,自動配置就會生效,進行自動配置!
以前我們需要自動配置的東西,現(xiàn)在 Spring Boot 幫我們做了
自動配置的東西都在 spring-boot-autoconfigure.jar 這個包下
它會把所有需要導入的組件,以類名的方式返回,這些組件就會被添加到容器;
容器中也會存在非常多的 xxxAutoConfiguration
的類(@Bean),就是這些類給容器中導入了這個場景需要的所有組件;并通過@Configuration 自動配置。
有了自動配置類,免去了我們手動編寫配置文件的步驟。
你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機房具備T級流量清洗系統(tǒng)配攻擊溯源,準確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級服務(wù)器適合批量采購,新人活動首月15元起,快前往官網(wǎng)查看詳情吧
網(wǎng)頁標題:SpringBoot自動裝配原理-創(chuàng)新互聯(lián)
鏈接分享:http://jinyejixie.com/article2/djsgoc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供虛擬主機、標簽優(yōu)化、網(wǎng)站建設(shè)、建站公司、小程序開發(fā)、手機網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)