码迷,mamicode.com
首页 > 其他好文 > 详细

@Resource和@Autowirde的区别

时间:2020-02-14 13:03:39      阅读:129      评论:0      收藏:0      [点我收藏+]

标签:require   常用   字段   name   set   init   base   默认   解决   

@Resource
@Resource有两个常用属性name、type,所以分4种情况

指定name和type:通过name找到唯一的bean,找不到抛出异常;如果type和字段类型不一致,也会抛出异常
指定name:通过name找到唯一的bean,找不到抛出异常
指定type:通过tpye找到唯一的bean,如果不唯一,则抛出异常:NoUniqueBeanDefinitionException
都不指定:通过字段名作为key去查找,找到则赋值;找不到则再通过字段类型去查找,如果不唯一,则抛出异常:NoUniqueBeanDefinitionException
@Autowired
@Autowired只有一个属性required,默认值为true,为true时,找不到就抛异常,为false时,找不到就赋值为null

@Autowired按类型查找,如果该类型的bean不唯一,则抛出异常;可通过组合注解解决@Autowired()@Qualifier("baseDao")

相同点
Spring都支持
都可以作用在字段和setter方法上
不同点
1.Resource是JDK提供的,而Autowired是Spring提供的
2.Resource不允许找不到bean的情况,而Autowired允许(@Autowired(required = false))
3.指定name的方式不一样,@Resource(name = "baseDao"),@Autowired()@Qualifier("baseDao")
4.Resource默认通过name查找,而Autowired默认通过type查找

@Resource和@Autowirde的区别

标签:require   常用   字段   name   set   init   base   默认   解决   

原文地址:https://www.cnblogs.com/wnlsq/p/12306764.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!