@Resource と @Autowired の比較 質問する

@Resource と @Autowired の比較 質問する

どのアノテーション、@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

おすすめ記事