2

これを正しく理解しているかどうかを確認したいと思います。春はフィールド参照を注入するためのセッターが必要ですか? パブリックフィールドとして検出するだけでそれを行うことができませんでしたか?

これに代わるものはありますか。私が理解していることから、Java EE の @Inject アノテーションはこれを問題なく実行できます。しかし、私はいつもより春に傾倒してきました。

4

3 に答える 3

1

セッターに参照を注入する必要はありません。クラスのパブリック変数またはセッター メソッドで Autowire を使用できます。依存関係を注入する良い方法であるコンストラクター引数を使用して Bean を注入することもできます。コンストラクターでも行われます。@inject も @autowired と同じ機能を実行しますが、@Autowired には追加の動作があり、内部で @required 属性も使用して、Bean に参照があり、適切に注入されているかどうかを確認します。

于 2012-10-23T05:03:29.687 に答える
1

これは、Bean の作成方法によって異なります。Spring はセッターを必要としません。他にもいくつかの方法があります。

  • フィールドレベルでの注釈による自動配線 (修飾子の有無にかかわらず)
  • コンストラクター注入 (xml またはコード内の注釈による)

パブリック フィールド (あなたが提案したように) は機能する可能性がありますが、試したことはありません。

残念ながら、XML アプローチはプライベート フィールド (私が知っている) を調べません。セッターを追加するか、コンストラクターを使用するか、ある種の自動配線を設定する必要があります。

オートワイヤーは XML と組み合わせることができることに注意してください。@Component やコンポーネントのスキャンなどとは対照的に、XML を介して Bean を作成した場合でも、Spring は配線アノテーションに注意を払います。

于 2012-10-23T03:17:46.960 に答える
1

Spring は、setter インジェクションに加えて、DI のいくつかの代替手段を提供します。たとえば、コンストラクター インジェクションを使用できます。または、Spring の@Autowiredアノテーションをコンストラクター、フィールド、またはセッターの注入に使用できます。あなたが言及したので、Spring が@Injectアノテーションをサポートしていることにも興味があると思います。

于 2012-11-11T14:55:13.047 に答える