我有两个Spring Beans如下:
@Service
public class A{
}
@Service
public class B{
@Autowired A a;
public B(){
a.doSomething();
}
Run Code Online (Sandbox Code Playgroud)
问题是不能保证A早于B初始化.因此我将在B()中得到一个NullPointerException.
无论如何,我可以在Spring中指定这种依赖吗?
Spring框架中的任何自动装配都将在构造bean 之后发生.因此,无法使用构造函数本身的自动装配成员(如Autowired javadoc页面中所示).您可以选择将注释放在构造函数本身上,并使其接受另一个bean作为参数,然后工作:
@Service
public class B {
@Autowired
public B(A a) {
a.doSomething();
}
}
Run Code Online (Sandbox Code Playgroud)
或者@PostConstruct在单独的方法上使用注释,该方法将保证在构造bean之后执行,并且所有引用都将正确连接:
@Service
public class B{
@Autowired
A a;
@PostConstruct
public moreSetup() {
a.doSomething();
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3257 次 |
| 最近记录: |