ホームページ > Java > &#&チュートリアル > @Autowired Bean がコンストラクターでは null ですが、他のメソッドでは null にならないのはなぜですか?

@Autowired Bean がコンストラクターでは null ですが、他のメソッドでは null にならないのはなぜですか?

Linda Hamilton
リリース: 2024-11-19 02:02:02
オリジナル
833 人が閲覧しました

Why is my @Autowired bean null in the constructor but not in other methods?

コンストラクターでの @Autowired Bean の割り当て

@Autowired Bean を使用するときに発生する一般的な問題は、 @Autowired Bean が、コンストラクタ。この記事では、この動作を調査し、それに対処する解決策を提供します。

提供されたコード スニペットでは、@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 ですが、他のメソッドでは null にならないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート