我正在使用Spring4。
有三个bean:bean1
和bean2
和bean3
,在我的bean1的@PostConstruct
方法中,我调用bean2的方法,这个bean2
的方法将调用bean3的方法,并且我得到了NPE,因为方法在bean2
中被调用,bean3
尚未被注入。
如何避免这种情况?代码看起来像这样:
@Service
public class Bean1 {
@Autowired
private Bean2 bean2;
@PostConstruct
public void init() {
// invoke bean2's method
bean2.test();
}
}
@Service
public class Bean2 {
@Autowired
private Bean3 bean3;
public void test() {
// invoke bean3's method,got a null pointer ex,because bean3 is null.
bean3.xxx();
}
}
最佳答案
您发布的代码是什么,我认为您可能不会遇到任何问题。
只需检查您的整个代码,您就可以自己创建bean而不是仅在一种情况下进行。
如果您自己创建bean,那么spring将不会注入任何东西并将bean对象提供为null。发布