春の注釈設定 - @ Autowired

@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保存

おすすめ

転載: www.cnblogs.com/zhuyeshen/p/12151645.html