違い: 1. @Autowired は Spring によって提供され、@Resource は J2EE によって提供され、JDK1.6 以降が必要です; 2. @Autowired は byType に従ってのみ挿入され、@Resource は byName によって自動的に挿入されますデフォルトで、byType に応じた Inject も提供されます。
関連する推奨事項: 「Java ビデオ チュートリアル 」
は Spring 3.X @ でよく使用されます。アセンブリ用の Autowired と @Resource。
これら 2 つの注釈の違いは何だろうかと思わずにはいられません。 ? ?
類似点:
@Resource は @Autowired と同等であり、フィールドまたは属性の setter メソッドでマークできます。
相違点:
(1) プロバイダー: @Autowired は org.springframework.beans.factory.annotation.Autowired によって提供されます。つまり、Spring によって提供されます。提供; @Resource は、J2EE によって提供され、JDK1.6 以降を必要とする javax.annotation.Resource によって提供されます。
(2) 注入方法: @Autowired は byType に従ってのみ注入します。@Resource はデフォルトで byName によって自動的に注入し、byType に従って注入も提供します。
(3) 属性: @Autowired依存関係をタイプ Object でアセンブルします。デフォルトでは、依存オブジェクトが存在する必要があります。null 値が許可される場合は、その required 属性を false に設定できます。名前でアセンブリを使用したい場合は、 @Qualifier アノテーションと組み合わせて使用できます。 @Resource には、name と type という 2 つの重要な属性があります。 name 属性は byName を指定します。name 属性が指定されていない場合、フィールドにアノテーションが付けられている場合、デフォルトでフィールドの名前が Bean 名として使用され、依存オブジェクトを検索します。アノテーションが setter にアノテーションされている場合は、フィールドの名前が Bean 名として使用されます。属性のメソッドでは、デフォルトで属性名が Bean 名として使用されます。 @Resource が name 属性を指定せず、依存オブジェクトがデフォルト名に従って見つからない場合、@Resource アノテーションは型によるアセンブリにフォールバックすることに注意してください。ただし、name 属性を指定すると、名前によってのみアセンブルできます。
@Resource Assembly Sequence
1. 名前と型を同時に指定すると、アセンブリの Spring コンテキストから一致する Bean のみが検索されます。見つからない場合はスローされます。 Exception
2. name が指定されている場合、アセンブリのコンテキストから名前 (id) に一致する Bean が検索されます。Bean が見つからない場合は、例外が発生します。 be throw
3. タイプが指定されている場合、アセンブリのコンテキストからタイプが一致する唯一の Bean を検索します。Bean が見つからない場合、または複数の Bean が見つかった場合は、例外がスローされます
4. 名前も型も指定されていない場合は、byName メソッドが自動的に使用されます。アセンブリ; 一致しない場合はプリミティブ型にフォールバックして一致し、一致する場合は自動的にアセンブルされます。
# @Resource アノテーションをフィールドに使用すると、setter メソッドを記述する必要がなくなり、このアノテーションは J2EE に属するため、Spring との結合が軽減され、コードがよりエレガントになります。 プログラミング関連の知識について詳しくは、プログラミング学習 Web サイト をご覧ください。 !
以上が@autowired と @resource の違いは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。