ComponentScan 扫描路径覆盖的真相
@ComponentScan
注解是 Spring
中很常用的注解,用于扫描并加载指定类路径下的 Bean
,而 Spring Boot
为了便捷使用 @SpringBootApplication
组合注解集成了 @ComponentScan
的能力。也许你听说过使用后者会覆盖前者中关于包扫描的设置,但你是否质疑过这个“不合常理”的结论?是否好奇过为什么它们不像其他注解在嵌套使用时可以同时生效?又是否好奇过 @SpringBootApplication
可以间接设置 @ComponentScan
属性的原因?本文从源码角度分析 @ComponentScan
的工作原理,揭示它独特的检索算法和注解层次结构中的属性覆盖机制。