SpringBoot自動(dòng)裝配原理及使用說明
1、Spring Boot自動(dòng)裝配是什么?
SpringBoot自動(dòng)裝配主要是基于注解編程 和 約定優(yōu)于配置的思想來設(shè)計(jì)的。

自動(dòng)裝配就是由Spring自動(dòng)把其他組件中的Bean裝載到IoC容器中,不需要開發(fā)人員再去配置文件中添加大量的配置。我們只需要在Spring Boot的啟動(dòng)類上添加 @SpringBootApplication 注解,開啟自動(dòng)裝配。
這種自動(dòng)裝配的思想,在Spring 3.x以后就開始支持,我們只要在類上添加 @Enable 注解就可以了,只是沒有像Spring Boot這樣全面地去設(shè)計(jì)。
因此,Spring 和 Spring Boot的最大區(qū)別就是在于Spring Boot的自動(dòng)裝配。那自動(dòng)裝配的原理又是什么呢?
2、自動(dòng)裝配原理
@SpringBootApplication這個(gè)注解是暴露給用戶使用的入口,它的底層是由 @EnableAutoConfiguration這個(gè)注解來實(shí)現(xiàn)的。
這樣一個(gè)自動(dòng)裝配的實(shí)現(xiàn),我把它歸納為以下三個(gè)核心步驟:

第一步:?jiǎn)?dòng)依賴組件的時(shí)候,組件中必須要包含 @Configuration 的配置類,在這個(gè)配置類里面聲明為 @Bean 注解,就將方法的返回值或者屬性值 注入到IoC容器中。
第二步:如果是使用第三方j(luò)ar包,Spring Boot采用SPI機(jī)制,只需要在/META-INF/目錄下增加spring.factories配置文件。然后,Spring Boot會(huì)根據(jù)約定規(guī)則,自動(dòng)使用SpringFactoriesLoader來加載配置文件中的內(nèi)容。
第三步:Spring獲取到第三方j(luò)ar中的配置以后,會(huì)使用調(diào)用ImportSelector接口來完成動(dòng)態(tài)加載。
這樣的設(shè)計(jì)的好處在于,大幅減少了臃腫的配置文件,而且各模塊之間的依賴實(shí)現(xiàn)了深度解耦。比如,我們使用Spring創(chuàng)建Web程序時(shí)需要導(dǎo)入非常多的Maven依賴,而Spring Boot只需要一個(gè)Maven依賴來創(chuàng)建Web程序,并且Spring Boot還把我們最常用的依賴都放到了一起,我們只需要 引入 spring-boot-starter-web 這一個(gè)依賴就可以完成一個(gè)簡(jiǎn)單的Web應(yīng)用。
以前用Spring的時(shí)候需要XML文件配置開啟一些功能,現(xiàn)在Spring Boot不用XML配置了,只需要寫一個(gè), 加了@Configuration注解 或者實(shí) 現(xiàn)對(duì)應(yīng)接口的配置類就可以了。
3、總結(jié)
①、通過@Import(AutoConfigurationImportSelector.class),導(dǎo)入配置類,這里并不是單個(gè)配置類的導(dǎo)入
②、AutoConfigurationImportSelector實(shí)現(xiàn)了ImportSelector類,重寫了selectImports方法,用于實(shí)現(xiàn)選擇性的批量配置類的裝配
③、通過Spring的SpringFactoryLoader機(jī)制,掃描classpath下的META/spring.factories文件,讀取需要實(shí)現(xiàn)自動(dòng)裝配的配置類
④、通過條件篩選,把不符合的移除,最終實(shí)現(xiàn)自動(dòng)裝配
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Java項(xiàng)目實(shí)現(xiàn)模擬ATM機(jī)
這篇文章主要為大家詳細(xì)介紹了Java項(xiàng)目實(shí)現(xiàn)模擬ATM機(jī),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-05-05
Idea?springboot?springCloud熱加載熱調(diào)試兩種常用方式
這篇文章主要介紹了Idea?springboot?springCloud熱加載熱調(diào)試常用的兩種方式,在項(xiàng)目開發(fā)的過程中,需要修改調(diào)試的時(shí)候偶每次都需要重啟項(xiàng)目浪費(fèi)時(shí)間,下面是我整理的兩種常用的兩種方式,需要的朋友可以參考下2023-04-04
Java構(gòu)造器(構(gòu)造方法)能否可以被重寫
這篇文章主要介紹了Java構(gòu)造器(構(gòu)造方法)能否可以被重寫問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-03-03
解析springBoot-actuator項(xiàng)目構(gòu)造中health端點(diǎn)工作原理
這篇文章主要介紹了springBoot-actuator中health端點(diǎn)工作原理,對(duì)spring-boot-actuator的項(xiàng)目構(gòu)造,工作原理進(jìn)行了全面的梳理,側(cè)重health健康檢查部分2022-02-02

