どのアノテーション、@Resource (jsr250) または@Autowired (Spring 固有) のどちらを DI で使用すればよいですか?
私は過去に両方をうまく使いましたが@Resource(name="blah")
、@Autowired @Qualifier("blah")
@Resource
私の直感では、このタグは JSR の人々によって承認されているので、そのままにしておくつもりです。
これについて強い意見をお持ちの方はいらっしゃいますか?
ベストアンサー1
@Autowired
(または@Inject
)との両方は@Resource
同じように機能します。しかし、概念上の違いや意味の違いがあります。
@Resource
は、名前で既知のリソースを取得することを意味します。名前は、注釈が付けられたセッターまたはフィールドの名前から抽出されるか、名前パラメータから取得されます。@Inject
または、タイプ別に適切な他のコンポーネント@Autowired
を接続してみてください。
これらはまったく異なる 2 つの概念です。残念ながら、の Spring 実装には@Resource
組み込みのフォールバックがあり、名前による解決が失敗したときに有効になります。この場合、@Autowired
-kind による型による解決にフォールバックします。このフォールバックは便利ですが、概念的な違いに気付かず、型ベースの自動配線に使用してしまう傾向があるため、多くの混乱が生じます@Resource
。