gpt4 book ai didi

java - Spring - 多种配置和@CompontentScan顺序

转载 作者:行者123 更新时间:2023-12-02 04:44:35 25 4
gpt4 key购买 nike

我有多个定义 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类的顺序。

最佳答案

第一步,Spring 扫描与基础包相关的所有类以查找 Bean。然后spring将创建bean并注入(inject)它。

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

来自文档:

The depends-on attribute can explicitly force one or more beans to be initialized before the bean using this element is initialized.

关于java - Spring - 多种配置和@CompontentScan顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56494641/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com