Springでの名前による依存性注入を実行するための別々の注釈が2つあります(javax.annotation.Resource
およびjavax.inject.Named
)。 Bean名に を参照する技術的に可能であったとしても、春の依存性注入、@ Namedまたは@Resourceを使用するには?
あなたが名前で、アノテーション駆動型の注入を表現する場合には、 は主に@Autowiredを使用していない:documentation at Springは
@Resource
名前で、注射のために使用されるべきであることを示します@Qualifierの値を使用します。代わりに、JSR-250 @Resource注釈を使用してください。具体的には 特定のターゲットコンポーネントを固有の名前で識別し、宣言されたタイプ はマッチングプロセスとは関係ありません。スプリングのみ@Qualifer
組み合わせる@Resource
代わりに@Autowired
を提唱されているよう
上記ビット混乱です。 later in the documentationまで@Named
の言及はありません。
JSR-250は@Resource
を定義しますが、JSR-330は@Inject
と@Named
を定義しています。私は彼らがかなり簡単にSpring内で混在してマッチすることができることを知っています。どのJSRを使用するのですか?
GuiceとCDIの移植性がいいと思うので、JSR-330アノテーションを使用するといいでしょう。一方、JSR-330アノテーションを使用している場合は、Spring内のlimitationsという2つの点でドキュメントも指摘しています。
名前による注釈のためのベストプラクティス(存在する場合)は何ですか?
ありがとうございます。
ここで言及した制限は、Springがこれらの注釈をどのように使用するか、そしてSpringが紹介する注釈がどのようにSpringを特別に扱うためにはるかに堅牢であるかを示しています。 –
制限はすべてそのように煩わしいとは思われません。彼らは存在しますが。 Springが追加のCDIアノテーションを採用していれば、これはもっと簡単になるでしょう。 – Saish