7

Spring で名前による依存性注入を実行するための 2 つの別個のアノテーションjavax.annotation.Resourcejavax.inject.Named. Springのドキュメントは@Resource、名前による注入に使用する必要があることを示しています。

アノテーション駆動型の注入を名前で表現する場合は、技術的に @Qualifier 値を介して Bean 名を参照できる場合でも、主に @Autowired を使用しないでください。代わりに、JSR-250 @Resource アノテーションを使用します。これは、特定のターゲット コンポーネントを一意の名前で識別するように意味的に定義されており、宣言された型は一致プロセスには関係ありません。

上記は、Spring がと組み合わせるのでは@Resourceなく提唱しているだけなので、少し混乱しています。ドキュメントの後半までは言及されていません。@Autowired@Qualifer@Named

JSR-250 では が定義されています@Resourceが、JSR-330 では@Injectおよびが定義されて@Namedいます。Spring 内でそれらをかなり簡単に組み合わせることができることはわかっています。どの JSR を使用するか?

Guice および CDI との移植性が優れているように思われるため、JSR-330 アノテーションを使用します。一方、ドキュメントでは、JSR-330 アノテーションを使用する場合の Spring 内 のいくつかの制限についても指摘しています。

名前によるアノテーション注入のベスト プラクティス (ある場合) は何ですか?

ありがとうございました。

4

1 に答える 1

1

@Resource は古く、Spring 2.5 以降でサポートされていますが、@Named サポートは Spring 3.0 で追加されており、どちらも名前による注入という同じ目的を達成するために使用できます。

Spring を使用する場合、Spring 2.5 との下位互換性と、javax.inject をクラスパスに追加/想定できるかどうかが、どちらを優先するかについての私の懸念です。

于 2014-01-30T04:52:13.727 に答える