在构造函数中自动装配 Bean:了解空引用
使用 Spring 管理的 POJO 时,通常使用 @Autowired 注入依赖项注解。然而,一些开发人员遇到了一个令人费解的问题,即在构造函数中访问时自动装配的 bean 为 null。本文旨在澄清这种行为并提供解决方案。
正如提供的答案中提到的,自动装配通常发生在对象构造之后。这意味着构造函数中对自动装配 bean 的任何引用都可能为 null。为了解决这个问题,建议将初始化代码从构造函数移动到用 @PostConstruct 注解的单独方法中。
以下修改后的代码片段说明了这种方法:
@Component public class DocumentManager implements IDocumentManager { @Autowired private IApplicationProperties applicationProperties; // Move initialization code to a PostConstruct method @PostConstruct public void init() { startOOServer(); } private void startOOServer() { if (applicationProperties != null) { // Rest of the initialization code here } } // ... Rest of the class remains the same }
通过注解init方法加上@PostConstruct,Spring会在bean被构造之后但在完全初始化之前自动调用它。这确保了 applicationProperties bean 可在初始化逻辑中使用。
以上是为什么我的自动装配 Bean 在构造函数中为空?的详细内容。更多信息请关注PHP中文网其他相关文章!