2009-07-09 12 views
9

Spring Beanにすべてのプロパティが設定され、initメソッドが呼び出されていることを確認する最も簡潔な方法は何ですか?Spring Beanが正しく初期化されていることを確認する

セッター注入とXML設定を使用した回答が好きです。これは私が今使っているものですから。


私はどちらかのセッターを設定したり、init-methodを呼び出すことを忘れケースを回避しようとしています。将来のプロジェクトで


私はskaffman's responseを好むだろうが、私は今の私に合ったものを選びました。

答えて

2

は必ず依存性チェックとinitメソッドを作るために豆タグの次の属性を使用しますすべての豆で呼び出されますが、むしろ、あなたがあなたのメソッドを "innit"と呼んでいないと仮定します。

<beans default-init-method="init" default-dependency-check="objects"> 

link

6

setterメソッドで@Requiredアノテーションを使用します。 Springは、手動でチェックする必要なしに、それらがすべて設定されていることを確認します。

また、initメソッドに@PostConstructを注釈すると、Springがそれらを呼び出すでしょう。

+0

はあなたに豆を与える前に、すべての依存関係を設定し、スプリングはないでしょう参照してください? – fastcodejava

+1

@fastcodejava誰かがSpringの設定を正しく/完全に設定していないかどうか。簡単に間違いを犯す...デプロイ時に見つけ出すのはいいのですが、アプリがユーザーの前で爆発するときではありません:) – Brabster

+0

@brabster - ああ、私は見る! – fastcodejava

5

すべてのオブジェクト/プリミティブ/両方が確実に設定されるように、依存性チェック属性をBean定義に追加できます。

<bean id="myBean" class="com.foo.MyBean" dependency-check="objects"/> 

はSkaffmanの答えは、より詳細に制御できますが、あなたは/たくない場合があり春にコンパイル時の依存関係を導入ありません。

+0

「オブジェクト」はいくつかの魔法の価値ですか? – skaffman

+0

"オブジェクト"は、オブジェクトのプロパティ(プリミティブではない)だけが設定されていることをSpringがチェックすることを意味します。 – Adamski

+0

ええと、私はあなたがそれを行うことができるのか分からなかった、それはハードコアの春1のように見えます。2 stuff :) – skaffman

8

このpollはあなたが探しているものです。

  • XMLに依存-check属性を使用することにより:11.52パーセント
  • @Required注釈(またはカスタム注釈)を使用することにより:21.40パーセント
  • 使用することによりここ

    は結果がありますInitializingBeanとアサート施設:INIT-法とアサート施設を使用することで23.87パーセント

  • :私は必要なプロパティのコンストラクタ・インジェクションを使用しているため、私は、する必要はありません14.40%
  • :19.34パーセント
  • 私は私のビジネスの方法で私の依存関係をチェック:7.41パーセント
  • 私は必要な依存関係をチェックしません:34.16パーセント
+0

+1:興味深い...最高票は「私は必要な依存性をチェックしない」と驚いたが。 – Adamski

+1

私はどちらもチェックしませんが、したいです。これが私が質問した理由です。 –

+0

これはかなり古い投票です。そのため、Springの開発者は@Requiredのようなものをもっと気付くでしょう。 @のために+1 – skaffman

関連する問題