違い@Autowired春アセンブリ@Resource注釈の合計

@Autowired

春の申し出に@Autowired注意事項は、あなたがorg.springframework.beans.factory.annotation.Autowiredパッケージをインポートする必要があります。採用@Autowired戦略は、注入の種類に応じました。

@Autowired(必須=偽):@Autowiredフィッティングのタイプによって、デフォルト(このコメントは春の金属産業である)、デフォルトの請求依存オブジェクトが存在している必要があり、あなたがnull値を許可する場合は、その必要なプロパティを設定することができますは、次のような偽であり、私たちは、アセンブリの名前を使用したい場合は@Qualifier注釈の使用を組み合わせることができます。

パブリッククラスUserServiceの{ 
    @Autowired 
    プライベートUserDao userDao。
}

容器にスプリングバックアセンブリタイプのUserDaoクラスに見られるように、コードに示すように、その後に注入。これは、豆の種類は、より多くの価値を持っている問題を作成し、特定の注射を選択することはできません状況、我々は@Qualifier使用を満たす必要があり、この時間になります。

すなわち、そのようなインターフェースUserDao実装複数のクラスとしてインタフェース実装クラス、複数のプレス型が一致する場合には、IoCコンテナは、実装クラスは、注射を必要とする特定の知らない場合。

スプリングアセンブリに特定のオブジェクト@Qualifier教えてください。

パブリッククラスUserServiceの{ 
    @Autowired 
    @Qualifier(名前= "userDao1")     
    プライベートUserDao userDao。
}

今回は我々がタイプと名前で注入したいオブジェクトを検索することができるようになります。

@資源

J2EE、パッケージjavax.annotation.Resourceをインポートする必要が提供する@Resource注釈。@Resourceのデフォルトは自動的にBYNAMEに従って注入しました。

@Resource効果@Autowiredに相当するが、@Resourceのデフォルトは自動的BYNAMEによって注入しながら、自動的に、byTypeによって注入@Autowired。

二つの属性は、名前とタイプしている、春はBeanの名前に注釈name属性の解決さを@Resourceなり、より重要である@Resourceは、type属性は、Beanのタイプに解決されています。

そのため、あなたはname属性を使用している場合は、自動注射戦略BYNAME使用され、自動注入戦略byType type属性を使用するときに使用されています。どちらのタイプの属性名が割り当てられている場合は、自動注射戦略のケースは、リフレクションを使用してBYNAME。

注釈@Resourceアセンブリシーケンスの:

  1. あなたが組み立てた豆のユニークなマッチを見つけるために、Springコンテキストから、名前とタイプを指定した場合は、例外がスローされます見つけることができません。
  2. 名前が指定されている場合、文脈から、名前(ID)例外がスローされ見つけることができない、豆組み立て一致を見つけます。
  3. タイプはあなたが組み立てたユニークを見つける豆の種類と一致するコンテキストから、指定された場合、例外がスローされます、見つける以上見つけることができません。
  4. どちらの名前場合は、しかし、タイプを指定しない場合、自動的にBYNAMEの方法に従って組み立てられ、一致しない場合、一致は、自動組立成功した場合、その後、バック一致するように、プリミティブ型にロール。

第三者に帰属春、J2EE Javaは、独自のものです。使用@Resourceコードとスプリングとの間の結合を減少させることができます。

 

そして、一人でリソース@一般@Autowired @Qualifier、と一緒に。

 

もちろん、競合がない場合、@Autowiredは別途も使用することができます

 

おすすめ

転載: www.cnblogs.com/kjitboy/p/12122822.html