ホームページ >Java >&#&チュートリアル >Autowired Bean がコンストラクターで Null になるのはなぜですか?

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

DDD
DDDオリジナル
2024-11-16 05:45:03987ブラウズ

 Why is My Autowired Bean Null in the Constructor?

コンストラクターでの 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 サイトの他の関連記事を参照してください。

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