1

Tomcatで実行されているSpring Bean(3レベル)を含むアプリケーションがあり、Beanには注釈が付けられて@Autowiredおり、必須です。

やりたいことは、Bean インジェクションの失敗を監視することです (展開の問題を示している可能性があります)。

私が考えている方法には、そうするための2つのオプションがあります。

  1. Bean を静的ブロックにロードする代わりに@Autowired、ロードが失敗した場合は何かを行います

  2. コードをtry{...} catch (NullPointerException e)で囲むので、Bean の場合はnull例外がスローされます。

  3. nullすべてのメソッドでBean が等しいかどうかを確認します。

#1が最もエレガントで、追加するコードの量が最も少ないと思いますが、静的ブロックなしでこれを行うエレガントな方法があるかどうか疑問に思っています.

ありがとう

4

3 に答える 3

3

ここには静かないくつかのオプションがあります。
私のお気に入りは、必要な依存関係に で注釈を付けてから@Autowired(required=false)、メソッドで@PostConstructtest で注釈を付けて、欠落している依存関係を処理することです。

...
@Autowired(required = false)
private Bean dependency;

@PostConstruct
private void init() {
  if(dependency==null) {
     // handle missing dependecy
  }
}

Spring で必要な dendecies のチェックに関する静かな興味深い記事があります。少し古いですが、まだ有益です。
http://blog.springsource.org/2007/07/11/setter-injection-versus-constructor-injection-and-the-use-of-required/

于 2013-05-14T12:22:32.793 に答える
2

私はあなたが必要だと思う@Autowired(required=true)

また、requiredデフォルトでは true です。そのため、依存関係が欠落しているとアラートが発生します。@AutoWiredを参照

于 2013-05-14T11:10:54.067 に答える
1

セッター注入を使用して、注入時に Bean が null かどうかをテストするのが最善の方法だと思います。

于 2013-05-14T11:16:52.113 に答える