JAVAで勉強しますSpringの@Autowired注入規則

817 ワード

@AutowiredはデフォルトではbyTypeで注入しますが、byType方式で複数の該当するbeanを見つけました.どう処理しますか?
いくつかのコードのテストを経て、AutowiredはデフォルトでbyTypeを押して、複数のbeanを見つけたら、またbyName方式によって照合します.もし複数があるなら、異常を報告します.
例:
@Autowired prvate ExamUserMapper examUserMapper;  - ExamUserMapperはインターフェースです.
1.spring先探しタイプはExamUserMapperのbeanです.
2.存在し且つ唯一であればOK.
3.唯一でないなら、結果集の中で、nameがexamUserMapperのbeanであることを探します.beanのnameは唯一性があるので、ここに来て、要求を満たすbeanがあるかどうかを確認できるはずです.@Autowired byName , @Qualifier , :@Autowired  ()   @Qualifier  (  "baseDao"  )beanのnameは唯一性があるので、理論的にはbyNameが早いですが、springはbyTypeをデフォルトで使って注入しています.私は迷っています.どれが本当に速いかは分かりません.具体的に実用化するには、あまり差がないような気がします.皆さんの習慣次第です.
また、@Resource(この注はJ 2 EEです)のラベルは、デフォルトではbyName方式で注入されます.