答えて
@Injectと@Autowireと@Resourceの違いは何ですか?
@Autowired:即ち注釈付きフィールドまたは請負業者のインタフェースによってのクラスによって、によって型リソースを注入スプリング可否注釈(@Injectと@Resourceとは対照的に)。インターフェイスやサブクラスの実装がほとんどない場合は、あいまいさを避けるために@Qualifierアノテーションを使用して選択範囲を絞り込むことができます。フォールバック一致の場合、Bean名はデフォルトの修飾子値と見なされます。この慣習を使用して特定のBeanを名前で参照することはできますが、@Autowiredは基本的にオプションの意味限定子を使用した型駆動型注入です。
@Inject: JSR-330(Java用依存性注入)に基づくアノテーションは、注入可能なコンストラクタ、メソッド、およびフィールドを識別します。このアノテーションは、Springの@Autowiredアノテーションのほぼ完全なドロップイン置換です。したがって、Spring固有の@Autowiredアノテーションを使用する代わりに、@ Injectを使用することもできます。 @Autowiredと@Injectの違いの1つは、@Injectに必須のフィールドがないため、適切なオブジェクトが見つからない場合に失敗するため、@Autowiredはrequired = falseを使用でき、nullの可能なフィールドのみを使用できますもし必要なら!)。 @Injectアノテーションの利点は、直接参照を注入するのではなく@Injectにプロバイダを注入するように依頼することです。プロバイダインタフェースは、とりわけ、Bean参照の遅延注入とBeanの複数インスタンスの注入を可能にします。 インターフェイスまたはサブクラスの実装がほとんどない場合は、あいまいさを避けるために@Namedアノテーションを使用して選択範囲を絞り込むことができます。 @Namedアノテーションは、Springの@Qualifierとよく似ています。
@Resource:アノテーションはJSR-250に基づいています。 @Resourceは@Autowiredと@Injectと非常に似ていますが、主な違いは、注入するために必要なBeanを見つけるために取られた実行パスです。 @Resourceは、最初に名前で検索し、次にタイプで検索し、最終的には修飾子で検索の範囲を絞り込みます(一致が名前で見つかった場合は無視されます)。 @Autowiredと@Injectは最初に型を指定してから絞り込みを絞り込み、最後に名前を指定します。
何がお勧めですか?ベストプラクティス? –
私はあなたのコメントに返信してうれしいですが、私はこの答えをそのまま保つことを好む。あなたは新しい質問を投稿しますか? –
最後の行では、私が知っているように@Autowiredも名前で検索していると言いましたが、名前のオプションはありませんか? –
@Haimに加えて、SpringとJSR-330(Java用依存関係注入)アノテーションとSpringとの最後の使い方の違いのthere is good descriptionに答えています。
|------------|---------------|---------------|---------------|-----------------------|
| | Setter/Field | Constructor | Applicable to | Matching order |
| | injection | injection | type | |
|------------|---------------|---------------|---------------|-----------------------|
| @Resource | X | | X | Name, Type, Qualifier |
|------------|---------------|---------------|---------------|-----------------------|
| @Autowired | X | X | | Type, Qualifier, Name |
|------------|---------------|---------------|---------------|-----------------------|
| @Inject | X | X | | Type, Qualifier, Name |
|------------|---------------|---------------|---------------|-----------------------|
- 1. 注釈付きクラス
- 2. 注釈付きバウンディングボックス
- 3. 注釈付Enum.Parse
- 4. 自動スケーリング画像注釈
- 5. OWLで注釈を読む匿名注釈付きターゲット
- 6. 注釈付きフィールドから注釈値を受け取る
- 7. Java注釈プロセッサ - 注釈付きKotlinクラス単位テスト
- 8. Spring mvc注釈検証のカスタム注釈
- 9. JPA 2.0フィールド注釈対メソッド注釈
- 10. Morris.jsに注釈/注釈を追加
- 11. 注釈注入とXML注入
- 12. (注釈)
- 13. 注釈
- 14. 3D注釈とPdfLayer
- 15. PoEditとPHP注釈
- 16. Shiro注釈春と
- 17. 春とJsonTypeInfo注釈
- 18. @WebServiceと@Transactional注釈
- 19. 注釈付きクラスは春
- 20. Spring MVC注釈付きコントローラ
- 21. JBossの注釈付きWS
- 22. 注釈付きのsymfony2ルーティング
- 23. 注釈付きSpring HandlerInterceptorマッピング
- 24. 私は注釈付きURL
- 25. Watsonナレッジスタジオでの注釈の種類と注釈
- 26. @ModelAttribute注釈付きメソッド内の@PathVariable注釈付きパラメータを自動的に文書化
- 27. グループ注釈が
- 28. 360ビデオ注釈
- 29. サイズイメージピンの注釈
- 30. C#データ注釈
http://docs.spring.io/spring/docs/3.2.4.RELEASE/spring-framework-reference/htmlsingle/#beans-standard-annotations、http://docs.spring.io /spring/docs/3.2.4.RELEASE/spring-framework-reference/htmlsingle/#beans-resource-annotation –
[@Resource vs @Autowired]の複製が可能です(http://stackoverflow.com/questions/4093504/resource)。 -vs-autowired) –
私が見つけた例の良い説明は[ここ](http://blogs.sourceallies.com/2011/08/spring-injection-with-resource-and-autowired/) – marioosh