如果我在Spring中有多个配置文件,bean的加载顺序是什么?

6

我在Spring应用中有三个配置文件。

@Configuration
public class FooConfig { ... }

@Configuration
public class BarConfig { ... }

@Configuration
public class FooBarConfig { ... }

这些bean的加载顺序是怎样的?我能在BarConfig中使用在FooConfig中定义的bean,反之亦然吗?

编辑

这个现在可以正常工作。但我的疑惑是这是否只是因为偶然。因为使用了不同的配置文件,它们被解析的顺序对于正确的bean加载很重要,因此存在歧义。


你尝试过它,发生了什么事? - Dave Newton
@DaveNewton:它运行得很好。但我怀疑它是否只是因为偶然而成功了。由于不同的配置文件被解析,存在歧义。 - brain storm
1个回答

5
请查看 Spring 文档
您可以使用依赖注入的方式 @Autowired 引用在其他 Java 配置类中声明的 Bean,但有时很难确定 Bean 的定义确切位置,为此可以使用 @Import 解决这个问题。
@Configuration
@Import({FooConfig.class, FooBarConfig .class})
public class FooBarConfig { 
//use Autowire to import bean declared in both FooConfig and FooBarConfig
 }

编辑: 如果bean A依赖于bean B,则可以保证在实例化A之前会先实例化B。如果没有依赖注入来维护这个顺序,一个技巧或变通方法是使用@Resource注入一个未使用的依赖项。


我不是在寻求解决方法。我已经编辑了我的问题,请看一下。 - brain storm

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接