ホームページ >Java >&#&チュートリアル >Autowired Bean がコンストラクターで Null になるのはなぜですか?
コンストラクターでの Bean の自動配線: Null 参照について理解する
Spring 管理の POJO を使用する場合、@Autowired を使用して依存関係を注入するのが一般的です。注釈。ただし、一部の開発者は、コンストラクターでアクセスすると 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 }
アノテーションを付けることによって@PostConstruct を使用した init メソッドでは、Bean が構築された後、完全に初期化される前に Spring が自動的にこのメソッドを呼び出します。これにより、applicationProperties Bean が初期化ロジック内で使用できるようになります。
以上がAutowired Bean がコンストラクターで Null になるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。