ホームページ  >  記事  >  Java  >  @Autowired Bean がコンストラクターで Null を返すのはなぜですか?

@Autowired Bean がコンストラクターで Null を返すのはなぜですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-11-13 15:38:02462ブラウズ

Why Does @Autowired Bean Return Null in Constructor?

コンストラクターでの Autowired Bean の初期化

別の Bean のコンストラクター内から @Autowired Bean を参照しようとすると、ヌル値。この現象は、自動配線プロセスのタイミングに起因します。

Spring Framework のメカニズムである自動配線は、アノテーションに基づいて Bean に依存関係を注入します。ただし、この注入は Bean の構築後に行われます。その結果、コンストラクター内でオートワイヤード Bean にアクセスしようとすると、null 値が生成されます。

この問題を軽減し、必要な依存関係を初期化するには、初期化コードをコンストラクターから別のメソッドに再配置し、それに @PostConstruct アノテーションを付けます。 Spring Framework は、Bean の構築と依存関係の注入後に @PostConstruct メソッドが実行されることを保証します。

たとえば、提供されたコードでは、startOOServer() メソッドをコンストラクターの外に移動し、それに @PostConstruct アノテーションを付けることができます。こうすることで、オートワイヤード Bean である applicationProperties がメソッドの実行前に利用可能になります。

以上が@Autowired Bean がコンストラクターで Null を返すのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。