首頁 >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