首頁 >Java >java教程 >為什麼我的自動組裝 Bean 在建構函式中為空?

為什麼我的自動組裝 Bean 在建構函式中為空?

DDD
DDD原創
2024-11-16 05:45:031003瀏覽

 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