构造函数中的 @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中文网其他相关文章!