ホームページ  >  記事  >  Java  >  @Resource と @Autowired: どの依存性注入アノテーションを選択するか?

@Resource と @Autowired: どの依存性注入アノテーションを選択するか?

DDD
DDDオリジナル
2024-11-13 15:37:02656ブラウズ

@Resource vs @Autowired: When to Choose Which Dependency Injection Annotation?

@Resource vs @Autowired: より深い考察

依存性注入 (DI) の領域では、アノテーションは依存関係の確立において重要な役割を果たします。オブジェクト間の関係。広く使用されている 2 つのアノテーションは、@Resource (JSR-250 から) と @Autowired (Spring フレームワークから) です。しかし、どのアノテーションを選択すればよいでしょうか?

@Resource: 名前ベースの取得

@Resource は、リソースを名前で取得するメカニズムとして機能します。この名前は、アノテーションの「name」パラメータを通じて指定することも、アノテーションが付けられたフィールドまたはセッターの名前から推測することもできます。 @Resource を利用すると、特定の識別子によって既知のリソースを明示的にリクエストします。

@Autowired: Type-Based Wiring

一方、@Autowired (またはJava EE の @Inject) は、必要なタイプに一致するコンポーネントを接続しようとします。これは、アノテーションが付けられたフィールドまたはセッターのタイプを調べ、アプリケーション コンテキストで互換性のある Bean を検索することによって行われます。必要に応じて、@Qualifier アノテーションを @Autowired と一緒に使用して、検索を特定の Bean 名に絞り込むことができます。

概念的な違い

@Resource と @Resource の基本的な違い@Autowired のアプローチは次のとおりです。

  • @Resource: 名前で知られる特定のリソースの取得に重点を置いています。
  • @Autowired: タイプに基づいて適切なコンポーネントを自動的に接続することを目的としています。

Spring の @Resource 動作

一方、@Resource の JSR-250 仕様では名前が優先されます。ベースの取得では、Spring の @Resource 実装にはフォールバック メカニズムが含まれています。名前ベースの解決が失敗した場合、デフォルトで @Autowired と同様のタイプベースの解決が使用されます。開発者がタイプベースの自動配線に誤って @Resource を使用する可能性があるため、この便利な機能は混乱を招く可能性があります。

以上が@Resource と @Autowired: どの依存性注入アノテーションを選択するか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。