構造函數中的 @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中文網其他相關文章!