@AutoConfigureAfter不生效 @Configration bean的創建順序


 

https://gooroo.io/GoorooTHINK/Article/17466/Lessons-Learned-Writing-Spring-Boot-Auto-Configurations/29652#.W_ZwdFUzYdV

https://blog.csdn.net/isea533/article/details/53975720

 

 

自己寫的starter中AutoConfig類所在包名不要和應用類的包名相同,  

如果@ComponetScan掃描到autoConfig類,會立即初始化, 此時順序不能保證。 如果autoConfig依賴一些bean順序 比如@AutoConfigureAfter會失效,造成問題

 

AutoConfiguration的本意是為了: 用戶只引入了相關的jar, 但是沒有自定義這些bean,  此時autoConfig會自動創建bean

比如用戶引用了redis,但是沒有寫<bean id=“redisXXXXX”>   redisAutoStarter會自動創建這些必須的類

autoConfig的啟動時機 應該是beanFactory靠后

 

 

 

不在同一個包下:
==>> spring.factories 中定義了autoConfig 會被加載

==>> spring.factories 沒有定義autoConfig, 不會被加載
  如果其他@Configuration類@Import了這個autoConfig, 會被加載

  其他@Configuration中@Autowire了spring.factories生成的@Bean,  導致提前初始化

 

同一包名下:
==>> 不管spring.factories中有沒有定義,掃描到后立即加載

 

排序算法 org.springframework.boot.autoconfigure.AutoConfigurationSorter#doSortByAfterAnnotation

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM