
正文
Spring 梳理 - @Autowired VS @Resource
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
- Autowired
@Autowired顾名思义,就是自动装配,其作用是为了消除代码Java代码里面的getter/setter与bean属性中的property。当然,getter看个人需求,如果私有属性需要对外提供的话,应当予以保留。
这里@Autowired注解的意思就是,当Spring发现@Autowired注解时,将自动在代码上下文中找到和其匹配(默认是类型匹配)的Bean,并自动注入到相应的地方去。
- @Autowired(required = false)
public class TestServiceImpl {
// 下面两种@Autowired只要使用一种即可
@Autowired
private UserDao userDao; // 用于字段上 @Autowired
public void setUserDao(UserDao userDao) { // 用于属性的方法上
this.userDao = userDao;
}
}- @Autowired接口注入
- 接口有两个实现类,Spring并不知道应当引用哪个实现类。这种情况通常解决办法:
- 使用@Qualifier注解,注意@Qualifier注解Car接口实现类的类名,不是bean的名称
@Autowired
@Qualifier("BMW")
private Car car;
- @Resource
- @Resource 与 @Autowired功能相似
- 默认通过name属性去匹配bean,找不到再按type去匹配
- 可以指定name或者type
@Resource(name = "xxx")
private Yyy y1; @Resource(type = Yyy.class)
private Yyy y2;
- @Resource VS @Autowired
- 、@Autowired是Spring的注解,@Resource是J2EE的注解







