Java での依存性注入に関して、開発者は @Resource アノテーションと @Autowired アノテーションのどちらを選択するかという問題に直面することがよくあります。どちらのアノテーションも効果的に依存関係を挿入できますが、セマンティクスには微妙な違いが存在します。
JSR-250 仕様の一部である @Resource アノテーションは、名前による既知のリソースのリクエストを意味します。名前は直接指定することも、注釈付きのセッターまたはフィールド名から推測することもできます。
対照的に、@Autowired (または @Inject) は型ベースのアプローチを強調します。名前ではなくタイプに基づいて適切なコンポーネントを挿入しようとします。
この概念的な違いは、これらのアノテーションの動作に直接影響するため、注意することが重要です。 @Resource はリソース名に依存して特定の依存関係を特定しますが、@Autowired は型の互換性に基づく自動配線に重点を置いています。
ただし、Spring フレームワークは、フォールバック机制を含む @Resource の実装を提供します。指定された名前のリソースが見つからない場合は、@Autowired のようなタイプベースの依存関係注入が使用されます。このフォールバックは便利ではありますが、開発者が誤って型ベースの配線に @Resource を使用する可能性があるため、混乱を招くことがよくあります。
このような曖昧さを避けるために、名前ベースの依存関係注入が明示的に行われるシナリオでは @Resource を使用することをお勧めします。必要な場合と、タイプベースの自動配線の場合は @Autowired (または @Inject) です。
以上が@Resource と @Autowired: 依存性の注入にどちらを使用する場合?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。