目錄
- 正常流程
- @Conditionalxxx作用
簡介
由上篇文章<<springboot 自動配置 autoConfig 全流程>>瞭解到自動配置的原理和流程,本文演示一個自定義starter demo;
1.正常流程
核心: 自動配置= @Conditional… + …Properties+其他;
新建工程,這裏用springboot演示 ,
1.1製作properties映射類:
1.2.製作autoConfiguration
1.3.將自動配置類加入到springboot自動配置列表
1.4 打包到倉庫,在其他項目引入starter
目錄結構如下
1.5 添加需要的properties
1.6 通過debug啓動,我們看到已經觸發了自動配置
測試發現,這個UserProperties和UserAutoConfiguration類都是JavaConfig形式的Bean;
2.@Conditionalxxx作用
在上面的1.5步驟中看到,當我們的properties提供齊全時,流程正常;
2.1 當properties不全時,
自動配置類並沒有生效,符合預期;因爲類上有@ConditionalOnProperty({“demo1.starter.begin”})
當屬性存在時,才觸發;
@ConditionalOnMissingBean({Test1.class})同理,當Test1的bean不存在時,纔會初始化Test1,
總結:
封裝一個starter就是默認提供實現,但開關留給了用戶,
核心: 自動配置= @Conditional… + …Properties+其他;
之前封裝SDK,現在封裝starter,各自有各自的場景,功能也有很大重疊的地方;
思考:兩個是等於嗎? 自動配置==SDK?