SpringBoot自動裝配原理

什么是SpringBoot?

使用Spring框架的應用開發(fā)中,在SpringBoot出現(xiàn)之間,主流的開發(fā)都是使用SpringMVC進行開發(fā)。MVC的應用開發(fā)使用到的IOC/AOP都需要通過配置文件applicationContext.xml進行配置。這時一個非常繁瑣的事情。
那么SpringBoot出現(xiàn)之后,大大的減少了這些繁瑣的工作,使應用開發(fā)者能夠快速的構(gòu)建一個應用,而不用去管理這些多而雜的xml配置文件。
SpringBoot通過封裝Spring框架達到快速開發(fā)的實現(xiàn)。
SpringBoot的設(shè)計

  • 約定優(yōu)于配置
    • 約定默認以jar包形式打包、目錄結(jié)構(gòu)(resources/templates/static...)
    • 約定starter的形式
    • 約定默認application.properties

@SpringBootApplication注解

@SpringBootApplication是一個復合注解,包含三個注解

@SpringBootConfiguration
@EnableAutoConfiguration
@ComponentScan(excludeFilters = {
        @Filter(type = FilterType.CUSTOM, classes = TypeExcludeFilter.class),
        @Filter(type = FilterType.CUSTOM, classes = AutoConfigurationExcludeFilter.class) })
public @interface SpringBootApplication{
}

@SpringBootConfiguration

本質(zhì)使用的是@Configuration,用于生成JavaConfig,從Spring3開始支持。

@ComponentScan

默認掃描當前包下包含@Component的類,托管到IOC容器中。

@EnableAutoConfiguration

包含兩個注解

@AutoConfigurationPackage
@Import(AutoConfigurationImportSelector.class)

其中@AutoConfigurationPackage包含

@Import(AutoConfigurationPackages.Registrar.class)

我們看下AutoConfigurationPackages.RegistrarAutoConfigurationImportSelector

AutoConfigurationImportSelector

ImportSelector的方式通過實現(xiàn)Spring提供的ImportSelector接口,實現(xiàn)它的selectImports方法返回需要托管到IOC的bean類。通過這種形式,可以在selectImports方法做一些邏輯處理,實現(xiàn)諸如過濾、判斷等額外操作。
AutoConfigurationImportSelector中主要是通過SpringBoot的SPI機制,SpringFactoriesLoader返回所有需要加載的class路徑。

AutoConfigurationPackages.Registrar

Registrar方式則是通過實現(xiàn)ImportBeanDefinitionRegistrar接口的registerBeanDefinitions方法,實現(xiàn)的bean的注冊托管。其實現(xiàn)是新建BeanDefinition再調(diào)用BeanDefinitionRegistry注冊這個bean實現(xiàn)IOC托管。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容