@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

@Configuration 不能同名,即使不在同一package下 https://blog.csdn.net/hongtinghua/article/details/92987119
posted @ 2018-11-22 17:09  funny_coding  阅读(8634)  评论(0编辑  收藏  举报
build beautiful things, share happiness