Spring Boot でのコンストラクターの自動配線
Spring Boot を使用する場合、自動配線を使用して Bean コンストラクターに依存関係を注入すると、Null 値が発生することがあります。これは、自動配線が Bean の構築後に発生するためです。
指定されたコード スニペットでは、@Autowired applicationProperties Bean は、DocumentManager コンストラクターで参照されるときは null ですが、convert メソッドで参照されるときは null ではありません。問題は、コンストラクターの実行後に自動配線が発生することです。
解決策: 構築後の初期化
この問題を解決するには、@ を使用します。依存関係を初期化する必要がある Bean クラス内のメソッドの PostConstruct アノテーション。このメソッドは Bean の構築後に呼び出され、必要な初期化ロジックを実行するために使用できます。
@PostConstruct アノテーションを使用するように DocumentManager クラスを変更する方法を次に示します。
@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(); } ...
この中でコードが改訂され、初期化ロジックは @PostConstruct の注釈が付けられた初期化メソッドに移動されました。これにより、Bean の構築後にメソッドが呼び出されたときに applicationProperties Bean が確実に使用可能になります。
以上がSpring Boot コンストラクターで自動配線が失敗するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。