首页  >  文章  >  Java  >  为什么我的自动装配 Bean 在构造函数中为空?

为什么我的自动装配 Bean 在构造函数中为空?

DDD
DDD原创
2024-11-16 05:45:03892浏览

 Why is My Autowired Bean Null in the Constructor?

在构造函数中自动装配 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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn