プロジェクト開発のための春を使用する場合は、自動組立を広範囲に使用されます、自動組立は、それは何ですか?簡潔に言えば:春SpringIOC容器の様々な構成要素間の依存関係を管理する割り当てを完了するために、依存性注入(DI)機能を使用して。
ここおよび要約自動的春のコメントで使用される3を注入することができます。最初の最初の外観は、注入されるXMLを使用する方法です。
ゼロレビュー:XML噴射モード
コンストラクタ、引数プロパティまたはプロパティを使用してください。
<! - (内側に春IOCコンテナ後に作成作成、)春の豆で管理する必要がある設定- > < 豆上記ID言及=「スーパーマン」クラス=「org.annotation.autowried.SuperMan」> < プロパティ名を= "CAR" REF = "CAR" > </ プロパティ> <! - <REF =のArg-コンストラクタ"CAR" /> - > </ 豆> < 豆ID = "CAR" クラス=「org.annotation.autowried .CAR " />
public class SuperMan {
private Car car;
/* private SuperMan(Car car){
this.car = car;
}*/
public void setCar(Car car) {
this.car = car;
}
}
public class Car {
private String brand = "喇嘛杀敌";
}
このコンポーネントは、所望のばねに注入し、依存関係管理コンポーネントを実行することができます。終わりを想起し、このように、構成が複雑で、正式に以下のトピックを注入された注釈を使用して入力。
@Autowiredはじめに
春2.5で@Autowiredコメントを紹介します!
@Target({ElementType.CONSTRUCTOR, ElementType.METHOD, ElementType.PARAMETER, ElementType.FIELD, ElementType.ANNOTATION_TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface Autowired {
boolean required() default true;
}
ビューのソースポイントからAutowiredノートには、これらは次の場所で使用できます。
@Target(ElementType.CONSTRUCTOR) #构造函数
@Target(ElementType.METHOD) #方法
@Target(ElementType.PARAMETER) #方法参数
@Target(ElementType.FIELD) #字段、枚举的常量
@Target(ElementType.ANNOTATION_TYPE) #注解
プロパティの値は、デフォルトはtrueでもあります。
要約:
Autowired春が来る@ 1、注釈を注入クラスによって達成されるAutowiredAnnotationBeanPostProcessorに依存
2、@ Autowiredはコンストラクタ、メソッド、PARAMETER、FIELD、ANNOTATION_TYPEに行動することができます
3、@ Autowiredデフォルトはの種類に応じて自動組立(byType)であります
4候補豆型の同じ複数、名前(BYNAME)によって組み立て指定がある場合、あなたは@Qualifierを満たしている必要があります。
NoSuchBeanDefinitionExceptionスロー該当スプリングIOCコンテナBeanコンポーネントが存在しない場合、名前を指定した後。@AutowiredもBeanが時間内に見つからないときにはfalseとして設定されている場合、システムは例外をスローしません、必要falseに設定することができます
単にコードを使用します。
フィールドプロパティで。
@Autowired
private HelloDao helloDao;
若しくは
private HelloDao helloDao;
public HelloDao getHelloDao() {
return helloDao;
}
@Autowired
public void setHelloDao(HelloDao helloDao) {
this.helloDao = helloDao;
}
若しくは
private HelloDao helloDao;
//@Autowired
public HelloServiceImpl(@Autowired HelloDao helloDao) {
this.helloDao = helloDao;
}
// 构造器注入也可不写@Autowired,也可以注入成功。
メンバ変数に書き込まれ@Autowiredが注入され、セッター又はコンストラクタは、それはもはやXMLファイルで構成されていません。
同じ種類の豆の候補が複数ある場合は、属性名の既定の設定に応じて得られます。私たちは、春に2つの候補helloWorldDao HelloDaoビーンとhelloDaoを持っていたよう。
@Autowired
private HelloDao helloDao;
第一のタイプの取得は、次に候補が注入@Qualifier定義された組み合わせを得る場合、前記helloDao、に従って得られた複数HelloDaoを発見しました。
@Autowired
@Qualifier("helloWorldDao")
private HelloDao helloDao;
BeanコンポーネントのHelloWorldDao注入名。(「XXX」)におけるXX @QualifierはBeanの名前であるため、戦略の@Autowiredと@Qualifier組み合わせの使用が自動的にbyTypeからBYNAME遷移中に注入します。
豆、同じタイプの複数の候補、@Primaryも好ましい成分を設定するために使用することができ、それはまた、一方が使用するデフォルトの優先順位です。
注意:使用@Qualifier時間、指定した名前を設定するために、どのように豆が存在しない例外がスローされた場合、それは例外がスローされます、あなたが使用することができ、予防:
@Qualifier("xxxxyyyy")
@Autowired(required = false)
private HelloDao helloDao;
また、注射のための豆+ @ Autowiredアセンブリ@ SpringBootで使用することができる、実際には、省略することができ、@Autowiredパラメータに加えます。
@Bean
public Person getPerson(@Autowired Car car){
return new Person();
}
// @Autowired 其实也可以省略
はじめに@Resource
@Target({TYPE, FIELD, METHOD})
@Retention(RUNTIME)
public @interface Resource {
String name() default "";
// 其他省略
}
ビューのソースポイントからのリソースの注釈、これらは次の場所で使用できます。
@Target(ElementType.TYPE) #接口、类、枚举、注解
@Target(ElementType.FIELD) #字段、枚举的常量
@Target(ElementType.METHOD) #方法
名前が指定されたインジェクションのコンポーネントの名前を指定します。
要約:
1、リソースJSR250仕様が達成される@、パケットjavax.annotation
2、資源はTYPEに基づいて行動することができます@、FIELD、METHOD
同じ種類の豆の候補が複数ある場合は、図3に示すように、リソースオートワイヤリング@デフォルトの属性名は、指定された名前を介して注入することができます
単にコードを使用します。
@Component
public class SuperMan {
@Resource
private Car car;
}
容器アセンブリは、プロパティ名の車を注入よります。2種類のそこBYD BMWの容器アセンブリの場合。BMWに参加する指定。次のコード:
@Component
public class SuperMan {
@Resource(name = "BMW")
private Car car;
}
ロール名と類似@Qualifier!
@Injectはじめに
@Target({ METHOD, CONSTRUCTOR, FIELD })
@Retention(RUNTIME)
@Documented
public @interface Inject {}
ビューのソースポイントからのノートを注入、これらは次の場所で使用することができます。
@Target(ElementType.CONSTRUCTOR) #构造函数
@Target(ElementType.METHOD) #方法
@Target(ElementType.FIELD) #字段、枚举的常量
要約:
注入は仕様でJSR330(Java用の依存性注入)で、@ 1、注入を達成するために、javax.inject.Injectジャーパッケージをインポートする必要があります
2、ジェクト@のコンストラクタ、メソッド、フィールドを行動することができます
図3に示すように、@を注入アセンブリのために必要であれば、それは@Namedで必要である名前で、種類に応じて自動組立です。
単にコードを使用します。
@Inject
private Car car;
BMWの部品を結合する指定します。
@Inject
@Named("BMW")
private Car car;
@Named役割同様の@Qualifier!
概要
1、Autowiredは、注入するJSR330仕様が実装されている@リソースJSR250の仕様は、実装されている@春が、来ています@
2は、Autowired @、ジェクトは本質的に同じを使用@、違いが要求属性ではありません@Inject
3、Autowired @、ジェクト@マッチの種類に応じて、デフォルトである、@リソースは、の名前で一致しています
図4は、Autowired @リソース名がで指定された@、一緒に名前と@Qualifierで必要とされる、と@を注入@Nameで使用した場合と一致する必要があります