首页 > Java > java教程 > 为什么我的 @Autowired bean 在构造函数中为 null 而在其他方法中却不是?

为什么我的 @Autowired bean 在构造函数中为 null 而在其他方法中却不是?

Linda Hamilton
发布: 2024-11-19 02:02:02
原创
833 人浏览过

Why is my @Autowired bean null in the constructor but not in other methods?

构造函数中的 @Autowired Bean 赋值

使用 @Autowired beans 时遇到的一个常见问题是,当在构造函数。本文探讨了此行为并提供了解决方案。

在提供的代码片段中,@Autowired bean applicationProperties 在 DocumentManager 构造函数中访问时为 null,但在其他方法中引用时它已正确初始化。这种不一致是由于 bean 初始化的生命周期造成的。

bean 的自动装配发生在对象构造之后,这意味着在调用构造函数时尚未为它们赋值。要解决此问题,请将初始化逻辑移至用 @PostConstruct 注释的单独方法。此注解确保在 bean 实例化和依赖注入之后调用该方法,从而使您能够可靠地访问自动装配的 bean。

修订的代码片段

public class DocumentManager implements IDocumentManager {
  @Autowired
  private IApplicationProperties applicationProperties;

  public DocumentManager() {
  }

  @PostConstruct
  public void init() {
    startOOServer();
  }

  private void startOOServer() {
    if (applicationProperties != null) {
      ...
    }
  }
}
登录后复制

进行此修改,初始化代码将在对象构造之后运行,并确保 applicationProperties bean 在需要时可用文档管理器。

以上是为什么我的 @Autowired bean 在构造函数中为 null 而在其他方法中却不是?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板