我有多个Spring@Configuration
定义 bean 的类。我运行应用程序的主类有@SpringBootApplication(scanBasePackageClasses = BasePackage.class)
.
我的问题是,扫描这些组件和创建 Bean 的顺序是什么?
@SpringBootApplication(scanBasePackageClasses = BasePackage.class)
public class MyApplication {
public static void main(final String[] args) {
SpringApplication.run(MyApplication.class, args);
}
}
及配置
@Configuration
class Config1{
// defines beans
}
@Configuration
class Config2{
// defines beans
}
另一个maven依赖也有Config3
@Configuration
class Config3{
// defines beans
}
我试图搜索文档,但没有找到这些组件是按什么顺序扫描和初始化的。
https://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/context/annotation/ComponentScan.html https://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/context/annotation/ComponentScan.html
https://docs.spring.io/spring-boot/docs/current/api/org/springframework/boot/autoconfigure/condition/ConditionalOnMissingBean.html https://docs.spring.io/spring-boot/docs/current/api/org/springframework/boot/autoconfigure/condition/ConditionalOnMissingBean.html
https://docs.spring.io/spring-boot/docs/current/api/org/springframework/boot/autoconfigure/EnableAutoConfiguration.html https://docs.spring.io/spring-boot/docs/current/api/org/springframework/boot/autoconfigure/EnableAutoConfiguration.html
Update
我问这个问题是因为我有一个带有 @ConditionalOnMissingBean 的 bean,以及定义它的多个配置。官方文档哪里有说明,哪个顺序@Configuration
类被扫描。