@Resourceがbeanを注入するプロセス

1368 ワード

//ExamUserMapper 
//type ExamUserMapper
//name examUserMapper
@Resource
private ExamUserMapper examUserMapper;

 
@Resourceの役割は@Autowiredに相当しますが、@AutowiredはbyTypeで自動的に注入され、@ResourceはbyNameで自動的に注入されます.@Resourceにはnameとtypeの2つの属性が重要です.
Spring@Resource注記のname属性をbeanの名前に解析し、type属性をbeanのタイプに解析します.したがって、nameプロパティを使用する場合はbyNameの自動注入ポリシーを使用し、typeプロパティを使用する場合はbyTypeの自動注入ポリシーを使用します.
nameもtypeも指定しない場合は、byName自動注入ポリシーが反射メカニズムで使用されます. 
 
手順:
  1. Spring先探タイプnameがexamUserMapperのbean
  2. 存在する場合はOK;
  3.一致しない場合は元のタイプに戻り、一致する場合は自動的にアセンブリされます.
 
@Resource(name = "examUserMapper") 
@Resource(name = "ExamUserMapper") 

@Resource組立手順1.nameとtypeを同時に指定すると、Springコンテキストから唯一一致するbeanを見つけて組み立てる、見つからないと例外2を投げ出す.nameが指定されている場合、コンテキストから名前(id)が一致するbeanを検索してアセンブリし、見つからない場合は例外3を放出する.typeが指定されている場合、コンテキストからタイプマッチングの一意のbeanが見つかってアセンブリされ、複数が見つからないか、見つからないか、例外4が投げ出されます.nameもtypeも指定されていない場合は、byName方式で自動的にアセンブリされます.一致しない場合は元のタイプに戻り、一致する場合は自動的にアセンブリされます.
 
 
関連:@Autowiredがbeanを注入するプロセス