@Autowired注釈、自動組立作業が完了すると、クラスのフィールド、メソッドとコンストラクタを標識することができます。セットを排除するために@Autowiredを使用することにより、メソッドを取得します。@Autowired使用前の時間は、我々はによって使用され、Beanのプロパティから構成され
<プロパティ名=「属性名」値=「属性値」/>
このように、構成がより複雑に、そしてより多くのコード。春にコメントを@Autowired 2.5を発表
指定するには、以下の使用例
UserRepository.java
1パッケージcom.proc.bean.repository。 2 3パブリックインターフェイスUserRepository { 4 (保存空隙5)。 6}
これは、saveメソッドを定義UserRepositoryインターフェイスを定義します
UserRepositoryImps.java
1パッケージcom.proc.bean.repository。 2 3インポートorg.springframework.stereotype.Repository。 4 5 @Repository( "userRepository") 6パブリッククラスUserRepositoryImps実装UserRepository { 7 8 @Override (){セーブ9公共ボイド 10のSystem.out.println( "UserRepositoryImps保存")。 11} 12}
実装インタフェース、および指定された識別子名userRepositoryのIoCでBean保存方法を実装するクラスを定義UserRepository
UserService.java
1パッケージcom.proc.bean.service。 2 3インポートorg.springframework.beans.factory.annotation.Autowired。 4インポートorg.springframework.stereotype.Service。 5 6インポートcom.proc.bean.repository.UserRepository。 7 8 @Service 9パブリッククラスUserServiceの{ 10 11 @Autowired 12プライベートUserRepository userRepository。 13 (){セーブ14公共ボイド 15 userRepository.save()。 16} 17}
それは、道@Autowired自動組立により、type属性をUserRepositoryすべきIoCコンテナから検索し、属性に戻ります
applicationContext.xmlを設定
<コンテキスト:コンポーネント・スキャンベースパッケージ=「com.proc.bean」/>
テストコード:
1 ApplicationContextのCTX =新しいClassPathXmlApplicationContext( "applicationContext.xmlを")。 2 3 UserServiceのUserServiceの=(UserServiceの)ctx.getBean( "UserServiceの")。 4 userService.save();
出力:UserRepositoryImps保存
それでは、原則@Autowired使用しますか?
実際には、スタートの春のIoCで、コンテナはAutowied @スキャンされたときにAutowiredAnnotationBeanPostProcessorコンテナは自動的に、ポストプロセッサをロードし、リソースや@Inject @、それは自動的にBeanがIoCコンテナを必要とするでしょうし、オブジェクトのプロパティに取り付け
<beanクラス= "org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor" />
注意事項:
使用時には容器内のクエリ豆の最初の種類に応じ、@Autowired
1は@Autowiredに豆指定されたデータを組み立てると同じように、クエリの結果が正確であれば
クエリの結果が1以上の場合は、名前で@Autowired見つけることになります。
クエリの結果が空の場合は、例外がスローされます。解決方法、必要=偽
例えば:
上記の例では、インターフェイスを実装するクラスを設定しUserRepository
パッケージcom.proc.bean.repository。 輸入org.springframework.stereotype.Repository。 @Repository パブリッククラスUserJdbcImps実装UserRepository { @Override (){保存公共のボイド のSystem.out.println( "UserJdbcImps保存"); } }
この時間の開始後、容器、コンテナ、名前userRepositoryにおけるUserRepositoryのタイプの2つの例があり、他方がuserJdbcImpsあります。UserServiceの中
@Autowired プライベートUserRepository userRepository。
出力:UserRepositoryImps保存
ここに起因するクエリの種類には2つの例では、名前を使用してマッチング方法は、容器内にuserRepositoryインスタンス名を見て、であり、組立の自動化へのパラメータ。
インスタンス希望が負荷に存在userJdbcImps場合、userJdbcImps userRepositoryの外側にフィールド名に加えて、@Qualifierタグを設けることができるアセンブリコードが書かれ、豆の名前を指定する必要が
1 @Autowired 2 @Qualifier( "userJdbcImps") 3プライベートUserRepository userRepository。
出力:UserJdbcImps保存