の---- @リソースの注釈

オリジナルリンクします。https://blog.csdn.net/weixin_38237873/article/details/83650429

 

@Resource @Autowiredと依存性注入の注釈が使用されています。ただ、種類によって自動射出プレスを@AutoWried、そして自動的にデフォルト@Resource BYNAMEで注入しました。

@Resourceは、2つの重要な属性、すなわち名前とタイプを持っています

春は、Beanのname属性名に解決され、type属性は、Beanのタイプに解決されました。あなたはname属性がBYNAME自動注射戦略を使用している使用する場合は、type属性を使用するのであれば、byType自動注入戦略を使用しています。BYNAMEを使用した自動注射戦略のための反射のメカニズムによって、指定されていない場合。

豆依存性注入@Resourceを見つける:(ルールは、例えば、フィールドに使用されます)

1. name属性が指定されていないどちらもBYNAME方法で検索し、自動的に、type属性を指定します。豆マッチングが見つからない場合、フォールバックは、注入見つかった場合、プリミティブ型を見つけることです。

この名前で、変数名です

エラーの例:

@Resource
プライベート文字列bucketName;
@Resource
プライベート文字列styleNameに、
この場合の配置Bean名は、属性名で指定された値ではなく、IDの値であります

<豆ID = "bucketName"クラス= "java.lang.Stringで">
<コンストラクタ-Argの値= "$ {oos.bucketName}" />
</豆>
<! -画像のスタイル名- >
<豆ID = "styleNameに"クラス= "java.lang.Stringで">
<コンストラクタ-Argの値= "$ {oos.styleName}" />
</ビーン>
なぜ再理解し、ここで私はいつも構成に対応すると考え前ためタイプ[java.lang.Stringで無修飾ビーン:次のように実際に与えられる上記二種類の文字列豆の構成まで文書のid属性値 2を発見したが、予想される単一のマッチングビーン:]定義されbucketName 、春にはname属性と変数名一貫した豆の値にbean要素に移動しますので、styleNameには、これはですが、name属性を指定していないので、それは見つけるために、元のString型で見つけることができない、結果は、2つを見つけるために見てエラー時にそう。

2.単に内部に等しいname属性豆豆要素とそこに名前を見つけるために、プレスの名前を@Resourceアノテーション名を指定します。

好例

@Resource(名= "バケット")
プライベート文字列bucketName;
@Resource(名= "スタイル")
プライベート文字列styleNameに、
<Bean名= "バケット"クラス= "java.lang.Stringで">
<値=コンストラクタ-Argの" oos.bucketName {} $ "/>
</豆>
<! -画像のスタイル名- >
<Bean名="スタイル"クラス=" java.lang.Stringで">
<コンストラクタ-Argの値=" $ {OOS } .styleName「/>
</豆>
3. @Resourceアノテーションは、Beanタイプのコンテキストから、唯一のtype属性を指定するアセンブリのためのユニークな一致を見つけ、見つけまたはこれ以上見つからない、例外をスローしません

4. name属性は、両方がスローされる例外を見つけることができない、組み立て豆のユニークなマッチを見つけるために、Springコンテキストから、別の指定されたタイプ@Resource指定します


おすすめ

転載: www.cnblogs.com/ncwoniu/p/11525962.html