- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有两个模块:module1
和 module2
。module2
依赖于 module1
。
module1
中的配置:
@Configuration
public class ConfigurationInModule1 {
@Bean
public FirstBean firstBean() {
return new FirstBean();
}
@Bean
public SecondBean secondBean(FirstBean firstBean) {
return new SecondBean(firstBean);
}
}
module2
中的配置:
@Configuration
public class ConfigurationInModule2 {
@Bean
public SomeBeanForModule2 beanForModule2(FirstBean firstBean) {
return new SomeBeanForModule2(firstBean);
}
}
如您所见,bean secondBean
和 beanForModule2
都依赖于 firstBean
。我需要确保当使用 module2
编译项目时,beanForModule2
应在 secondBean
之前初始化。如果没有 module2
则 secondBean
应该在标准流程中初始化。
是否可以在Spring中配置它?
附注我需要控制初始化的顺序。我知道有一个特殊的注释 @DependsOn
可用于设置间接依赖项,但在我的情况下,我无法在 secondBean
上使用它,因为依赖项 beanForModule2
是可选的,放置在另一个模块中。
最佳答案
Spring 负责 bean 初始化的顺序,因此如果一个 bean 依赖于其他 bean,那么 Spring 将首先初始化依赖项 Bean,然后再初始化依赖项 Bean。
在您的情况下,FirstBean
将始终在 SomeBeanForModule2
之前初始化,无需任何其他配置。
如果您的情况下是 FirstBean
的依赖 Bean 未声明(即 module1 不存在),那么 Spring 将抛出 org.springframework.beans.factory.NoSuchBeanDefinitionException
。所以 module2 不能在没有 module1 的情况下初始化。
编辑:-对于 Bean 初始化的顺序,即使 Bean 位于单独的文件中,您也可以使用 @DependsOn。
只需在 module1 的 ConfigurationInModule1 类中添加 @import(ConfigurationInModule2.class)
即可。
并在第二个Bean上使用@DependsOn("beanForModule2")
。
关于java - 如何在 Spring 中添加来自另一个模块的 bean 依赖项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54665544/
我是一名优秀的程序员,十分优秀!