springboot裝配原理

springboot有什么好處/特性?

容易上手,提升開發效率,為 Spring 開發提供一個更快、更簡單的開發框架。
開箱即用,遠離繁瑣的配置。

2.springboot主要實現思想?

約定大約配置配置;
自動裝配;

約定大約配置配置

主要體現:
1.maven文件結構約定;
2.springboot 默認文件以及配置文件中屬性的配置;
3.對于springmvc的依賴,自動依賴內置tomcat容器;
4.starter組件自動裝配

springboot自動裝配原理?

由于@SpringBootApplication中默認實現了@EnableAutoConfiguration
而@EnableAutoConfiguration中引入了AutoConfigurationImportSelector

@Import(AutoConfigurationImportSelector.class)
public @interface EnableAutoConfiguration {

重點關注下selectImports 會
讀取配置過濾信息
根據 META-INF/spring-autoconfigure-metadata.properties下的文件下的條件選擇加載對應的配置bean
例如:
其中一條記錄:

org.springframework.boot.actuate.autoconfigure.mongo.MongoHealthContributorAutoConfiguration.ConditionalOnClass=org.springframework.data.mongodb.core.MongoTemplate

即:只有當存在MongoTemplate類時,才會自動裝在。
以下為MongoHealthContributorAutoConfiguration與我們日常通過@configuration定義bean一致,也是通過@Bean方式引入.

MongoHealthContributorAutoConfiguration
@Configuration(proxyBeanMethods = false)
@ConditionalOnClass(MongoTemplate.class)
@ConditionalOnBean(MongoTemplate.class)
@ConditionalOnEnabledHealthIndicator("mongo")
@AutoConfigureAfter({ MongoAutoConfiguration.class, MongoDataAutoConfiguration.class,
        MongoReactiveHealthContributorAutoConfiguration.class })
public class MongoHealthContributorAutoConfiguration
        extends CompositeHealthContributorConfiguration<MongoHealthIndicator, MongoTemplate> {

    @Bean
    @ConditionalOnMissingBean(name = { "mongoHealthIndicator", "mongoHealthContributor" })
    public HealthContributor mongoHealthContributor(Map<String, MongoTemplate> mongoTemplates) {
        return createContributor(mongoTemplates);
    }
}

加載bean 讀取每個starter下的META-INF/spring.factories
此文件內容位接口=實現類
最后講讀取到的bean信息,根據讀到的過濾信息進行過濾,selectImports返回加載到的configclass名稱。

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容