在Spring Boot文档中明确指出,必须通过spring.factories文件指定自动配置:
自动配置必须仅以这种方式加载。确保它们是在特定的包空间中定义的,并且它们永远不是组件扫描的目标。
我确实尝试过在我的自动配置类上放置一个@Component,并确保它将被组件扫描所捕获。好像很管用。
虽然我确实认为这是一种糟糕的实践,因为组件扫描在现实世界中不太可能真正获得它,但我想知道为什么文档对它有如此强烈的感觉。还有什么其他的危险我没有预料到,如果有的话,哪些危险?
编辑:在https://youtu.be/jDchAEHIht0?t=734 Stéphane和Brian中解释有两个阶段,一个叫做"UserConfiguration阶段“,另一个称为"AutoConfiguration阶段”。按照这个想法,在一个自动配置类上使用@ComponentScan会将它移动到“用户配置阶段”,这将基本上破坏自动配置的语义。
然而,在我的实验中,我没有能够打破它。只要我保留我的@Conditional注释,它就会像预期的那样工作.
发布于 2020-09-13 08:47:20
好像很管用。
正如您可能会怀疑的那样,文档中有一个很好的理由来显示该说明。自动配置的全部要点是,一旦用户配置被解析,它们就会被处理,原因很简单,订单是很重要的。
如果您有一个配置类生成一串bean的应用程序,并且如果用户已经表达了意见,您希望确保在自动配置中没有创建特定的bean,则需要确保在用户配置之后处理这个自动配置。你分享的视频描述了更多细节,我建议看完整的部分。
还有什么其他的危险我没有预料到,如果有的话,哪些危险?
希望上面的解释和你自己的编辑能告诉你。自动配置不是用户配置.在组件扫描中声明它们是用户配置的教科书。
https://stackoverflow.com/questions/63729375
复制相似问题