我们在项目中使用了 Spring,今天我发现了一种奇怪的行为。在我看来,在以下两种情况下,依赖注入(inject)和注释 @DependsOn 应该是相同的
@Bean
public ClassA classA(){
//code
}
@Bean
public ClassB classB(ClassA classA){
someMethodWhichNeedsClassA()
}
和
@Bean
public ClassA classA(){
//code
}
@Bean
@DependsOn("classA")
public ClassB classB(){
someMethodWhichNeedsClassA()
}
看来,这两种方式并不相同。我不允许共享我的代码,但在第一种情况下,我可以访问第一个 Bean 中填充的列表,但在第二种情况下则不能。 我试图在文档或其他博客中找到一些内容,但没有成功。
有谁知道这两种方式之间是否有任何差异,因为我认为这与 bean 创建的顺序有关,仅此而已。
感谢您的帮助
最佳答案
默认情况下,Spring 管理 bean 的生命周期并安排它们的初始化顺序。您的第一个示例就是这种情况。而在第二个示例中,您告诉 Spring bean B 依赖于 A。因此 spring 将在 bean B 之前创建 bean A。
Beans on which the current bean depends. Any beans specified are guaranteed to be created by the container before this bean. Used infrequently in cases where a bean does not explicitly depend on another through properties or constructor arguments, but rather depends on the side effects of another bean's initialization.
关于java - 依赖注入(inject)和@DependsOn之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59830580/