Spring で名前による依存性注入を実行するための 2 つの別個のアノテーションjavax.annotation.Resource
とjavax.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 内 のいくつかの制限についても指摘しています。
名前によるアノテーション注入のベスト プラクティス (ある場合) は何ですか?
ありがとうございました。