spring boot 中 @ConditionalOnMissingBean和@ConditionalOnBean註解注意事項

關於使用@Bean註解注入bean致使ConditionOnMissBean和 ConditionOnBean 註解有時候會失效的問題
文檔上提示,須要注意bean添加的順序,由於該條件是根據當前加載的內容來判斷是否符合,也就是說若是 @ConditionalOnBean 和 @ConditionalOnMissingBean 被提早加載,條件將沒法成立,咱們得保證bean Conditions被後加載,纔會生效。
 
重點: 這裏咱們可能會想到使用@Order或是@AutoConfigureOrder註解來調整順序,很遺憾,沒法調整順序,condition相關的處理是在包掃描的時候執行的,因此這裏的順序只根包掃描的順序有關,而包掃描的順序依賴包名和類名的字符排序,而 @AutoConfigureOrder只能調整bean的注入順序,可是判斷是否應該注入的Condition是被提早處理掉了的。

跟maven的pom中包引入的順序也有關係,先引入的先掃描到 spring

引入的兩個包中都有@ConditionalOnMissingBean,先引入的包,先執行maven

 

解決辦法:修改類路徑來調整順序或是調整包引入順序
 
測試版本:spring boot 2.1.4.RELEASE
相關文章
相關標籤/搜索