SpringのAutowiredキーワードとResourceキーワードの違いは何ですか?

SpringのAutowiredキーワードとResourceキーワードの違いは何ですか?

@Resourceと@AutowiredはどちらもBeanの挿入に使用されます。実際、@ ResourceはSpringの注釈ではありません。そのパッケージ
はjavax.annotation.Resourceであり、インポートする必要がありますが、Springはこの注釈の挿入をサポートしています。
1.共通点
どちらもフィールドとセッターメソッドに記述できます。両方がフィールドに書き込まれている場合は、セッターメソッドを記述する必要はありません。
2.相違点
(1)@Autowired
@Autowiredは、Springの注釈を提供します
。これは、パッケージorg.springframework.beans.factory.annotation.Autowiredにインポートする必要があります。byTypeに従ってのみ挿入されます。
@Autowiredアノテーションは、タイプ(byType)に従って依存オブジェクトをアセンブルすることです。デフォルトでは、依存オブジェクトが存在する必要があります。null値が許可されている場合は、必須属性をfalseに設定できます。byNameを使用してアセンブルする場合は、@ Qualifierアノテーションと組み合わせて使用​​できます。
(2)@Resource
@Resourceは、デフォルトでByNameに従って自動的に挿入され、J2EEによって提供され、パッケージjavax.annotation.Resourceをインポートする必要があります。
@Resourceには、nameとtypeの2つの重要な属性があります。Springは@Resourceで注釈が付けられたname属性をbeanの名前に
解析し、type属性はbeanのtypeに解析します。したがって、name属性を使用する場合は、byName
の自動注入戦略を使用し、type属性を使用する場合は、byTypeの自動注入戦略を使用します。name属性もtype属性も指定されていない場合は、
リフレクションメカニズムによるbyName自動注入戦略を使用します。
注:@Resourceをsetterメソッドに配置することをお勧めします。これは、オブジェクト指向の考え方に沿っているため、属性を直接操作する代わりに、setおよびgetを介して属性を操作するためです。

public class TestServiceImpl {
// 下面两种@Autowired只要使用一种即可
@Autowired
private UserDao userDao; // 用于字段上
@Autowired
public void setUserDao(UserDao userDao) { // 用于属性的方法上
this.userDao = userDao;
}
}
public class TestServiceImpl {
@Autowired
@Qualifier("userDao")
private UserDao userDao;
}
public class TestServiceImpl {
// 下面两种@Resource只要使用一种即可
@Resource(name="userDao")
private UserDao userDao; // 用于字段上
@Resource(name="userDao")
public void setUserDao(UserDao userDao) { // 用于属性的setter方法上
this.userDao = userDao;
}
}

@Resourceアセンブリシーケンス:
①名前とタイプの両方が指定されている場合、一致するBeanのみがアセンブリのSpringコンテキストから検出され、見つからない場合は例外がスローされます。
②名前を指定した場合、名前(id)に一致するBeanをコンテキストから検索して組み立て、見つからない場合は例外をスローします。
③タイプが指定されている場合、アセンブリのコンテキストから類似する一致するBeanのみが見つかります。見つからない場合、または複数見つかった場合は、例外がスローされます。
④名前もタイプも指定されていない場合はbyNameメソッドで自動的にアセンブルされ、一致しない場合は元のタイプにフォールバックして照合され、一致した場合は自動的にアセンブルされます。
@Resourceは@Autowiredと同等ですが、@ AutowiredはbyTypeに従って自動的に挿入されます。

おすすめ

転載: blog.csdn.net/m0_51684972/article/details/109227554