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中文網其他相關文章!