/ @Autowiredと@Requiredによってスローされる例外

@Autowiredと@Requiredによってスローされる例外 - 春

@Requiredアノテーションは、コンテナが依存関係注入のためのBeanを見つけられない場合、この例外をスローします: org.springframework.beans.factory.BeanInitializationException

@Autowiredの例外は次のとおりです。 org.springframework.beans.factory.BeanCreationException

これらのシナリオを考えてみましょう。 私は存在しない別のBean Bを注入するためにBean Aで@Requiredを使用し、次にアプリケーションを起動します。 @AutowiredをBean Aで使用して、存在しない別のBean Bを注入してから、アプリケーションを起動します。

@Requiredと@Autowiredの例外がスローされたときを知りたいですか?それは同じ時ですか? Springアプリケーションのコンテキストがロードされたら?

回答:

回答№1は2

@Required アノテーションは、Springによって処理されています。 RequiredAnnotationBeanPostProcessor そして @Autowired 〜によって AutowiredAnnotationBeanPostProcessor。ソースコードによると ここに そして ここにこれらの2つのポストプロセッサは、それぞれ注文されます。のためのもの @Autowired 〜の順序 Integer.MAX_VALUE - 2@RequiredInteger.MAX_VALUE - 1。による 春の Ordered インタフェース値が低いほど優先度が高くなります。

それに基づいて、私は信じています @Autowired Beanポストプロセッサは、その前に実行されます @Required。あなたの質問に答えるためには、 @Autowired その前に投げられる @RequiredSpringアプリケーションコンテキストが作成されたとき。