Spring-多种配置和@CompontentScan顺序

时间:2019-06-07 12:45:48

标签: java spring-boot

我有多个定义bean的Spring @Configuration类。我运行应用程序的主要类是@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-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

更新

我问这个问题是因为我有一个具有@ConditionalOnMissingBean的bean,以及定义它的多个配置。正式文档声明中的位置在哪里,将扫描@Configuration类的顺序。

1 个答案:

答案 0 :(得分:0)

第一步,Spring扫描相对于基本包的所有类中的bean。然后春天将创建豆并将其注入。

如果需要按特定顺序创建bean,可以通过添加@DependsOn

从文档中

  

depends-on属性可以显式强制将一个或多个bean设置为   在使用此元素的bean初始化之前进行了初始化。