首页 >Java >java教程 >为什么 Spring Boot 构造函数中自动装配失败?

为什么 Spring Boot 构造函数中自动装配失败?

Linda Hamilton
Linda Hamilton原创
2024-11-12 03:14:02871浏览

Why Does Autowiring Fail in Spring Boot Constructors?

Spring Boot 中的构造函数自动装配

使用 Spring Boot 时,使用自动装配将依赖项注入到 bean 构造函数有时会导致 null 值。这是因为自动装配发生在 bean 构造之后。

在给定的代码片段中,@Autowired applicationProperties bean 在 DocumentManager 构造函数中引用时为 null,但在 Convert 方法中引用时则不是 null。问题是自动装配发生在 构造函数执行之后。

解决方案:构造后初始化

要解决此问题,请使用 @ Bean 类中应初始化依赖项的方法上的 PostConstruct 注释。该方法将在 bean 构造后调用,可用于执行必要的初始化逻辑。

以下是如何修改 DocumentManager 类以使用 @PostConstruct 注解:

@Component
public class DocumentManager implements IDocumentManager {

  private Log logger = LogFactory.getLog(this.getClass());
  private OfficeManager officeManager = null;
  private ConverterService converterService = null;

  @Autowired
  private IApplicationProperties applicationProperties;

  // Remove initialization code from constructor
  public DocumentManager() {
  }

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

  ...

在此修改后的代码,初始化逻辑已移至initialize方法,该方法使用@PostConstruct注释。这确保了在 bean 构造后调用该方法时 applicationProperties bean 可用。

以上是为什么 Spring Boot 构造函数中自动装配失败?的详细内容。更多信息请关注PHP中文网其他相关文章!

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