我正在使用Spring4。

有三个bean:bean1bean2bean3,在我的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。发布

08-06 09:31