一.@Resource注解简单介绍
@Resource注解标注的属性默认按照ByName进行注入,由J2EE提供
如果我们想按照ByType注入,代码要这样写:
public class LaController {
//按类型注入
@Resource(type=LaService.class)
private LaService laService;
}
复制代码
如果LaService接口存在两个实现类,且两个实现类都会被spring扫描到,在注入的时候就会报错:nested exception is
org.springframework.beans.factory.NoUniqueBeanDefinitionException: No qualifying bean of type 'com.netty.use.nettyuse.service.LaService' available: expected single matching bean but found 2: la2ServiceImpl,laServiceImpl
type也可以是实现类class,例如:
public class LaController {
//按类型注入
@Resource(type=La2ServiceImpl.class)
private LaService laService;
}
复制代码
这样就会注入La2ServiceImpl实例,就不会出现上面的报错了。
二.注入源码详解
代码定位到
AbstractAutowireCapableBeanFactory类的populateBean方法
//是否有实例化相关的BeanPostProcessor
b