如何 运行 在 Spring 中一个 bean 之后但在另一个 bean 之前的方法?
How to run a method after one bean but before another bean in Spring?
如何 运行 一个依赖于某个 bean 而不是另一个 bean 的方法?
我有两颗豆子。 SecondBean
取决于 FirstBean
。此外,在创建 SecondBean
之前,我必须执行一些初始化逻辑,这些逻辑应该与 FirstBean
和其他一些 bean 一起执行。
我会想象这样的事情(它不起作用,因为初始化不是 Bean):
@Autowired
public void initialization(FirstBean firstBean, SomeTotalyOtherBean otherBean){
firstBean.doSomething(otherBean);
}
@Bean
@DependsOn("initialization")
public SecondBean secondBean(FirstBean firstBean) {
return new SecondBean(firstBean);
}
@Bean
public FirstBean firstBean() {
return new FirstBean();
}
我知道我可以将所有初始化过程移动到 firstBean
方法中,但在我的情况下它似乎不正确,因为此过程与 firstBean
创建无关。我也可以将初始化过程移到 secondBean
方法中,但它也不适合那里,因为此逻辑与 secondBean
创建无关。这只是一个逻辑,只有在这种情况下必须在这些 bean 创建之间执行。
听起来很简单as/one可能的方法:
/*@Autowired
public void initialization(FirstBean firstBean, SomeTotalyOtherBean otherBean){
firstBean.doSomething(otherBean);
}*/
@Bean
@Autowired //!
//@DependsOn("initialization")
public SecondBean secondBean(FirstBean firstBean) {
return new SecondBean(firstBean);
}
@Autowired //! SomeTotalyOtherBean should be "visible" to this context...
@Bean
public FirstBean firstBean(SomeTotalyOtherBean other) {
FirstBean chill = new FirstBean();//
chill.doSomething(other);
return chill;
}
合并 firstBean() 和 initialization(...) 使得 firstBean() returns 初始化 bean。
Imo 更好的设计是仅在准备好用作依赖项/初始化后才发布组件。
编辑:可以在 FirstBean 的构造函数中进行初始化吗?
如何 运行 一个依赖于某个 bean 而不是另一个 bean 的方法?
我有两颗豆子。 SecondBean
取决于 FirstBean
。此外,在创建 SecondBean
之前,我必须执行一些初始化逻辑,这些逻辑应该与 FirstBean
和其他一些 bean 一起执行。
我会想象这样的事情(它不起作用,因为初始化不是 Bean):
@Autowired
public void initialization(FirstBean firstBean, SomeTotalyOtherBean otherBean){
firstBean.doSomething(otherBean);
}
@Bean
@DependsOn("initialization")
public SecondBean secondBean(FirstBean firstBean) {
return new SecondBean(firstBean);
}
@Bean
public FirstBean firstBean() {
return new FirstBean();
}
我知道我可以将所有初始化过程移动到 firstBean
方法中,但在我的情况下它似乎不正确,因为此过程与 firstBean
创建无关。我也可以将初始化过程移到 secondBean
方法中,但它也不适合那里,因为此逻辑与 secondBean
创建无关。这只是一个逻辑,只有在这种情况下必须在这些 bean 创建之间执行。
听起来很简单as/one可能的方法:
/*@Autowired
public void initialization(FirstBean firstBean, SomeTotalyOtherBean otherBean){
firstBean.doSomething(otherBean);
}*/
@Bean
@Autowired //!
//@DependsOn("initialization")
public SecondBean secondBean(FirstBean firstBean) {
return new SecondBean(firstBean);
}
@Autowired //! SomeTotalyOtherBean should be "visible" to this context...
@Bean
public FirstBean firstBean(SomeTotalyOtherBean other) {
FirstBean chill = new FirstBean();//
chill.doSomething(other);
return chill;
}
合并 firstBean() 和 initialization(...) 使得 firstBean() returns 初始化 bean。
Imo 更好的设计是仅在准备好用作依赖项/初始化后才发布组件。
编辑:可以在 FirstBean 的构造函数中进行初始化吗?