ホームページ  >  記事  >  Java  >  Spring Boot コンストラクターで自動配線が失敗するのはなぜですか?

Spring Boot コンストラクターで自動配線が失敗するのはなぜですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-11-12 03:14:02827ブラウズ

Why Does Autowiring Fail in Spring Boot Constructors?

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 サイトの他の関連記事を参照してください。

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