每天一个SpringBoot注解之@Autowired和@Resource

前言:说好的每天一个注解,但是博主是开发游戏的,临近过年了,新年活动杂七杂八的事情一大堆,就耽搁了一阵子时间,现在才有空抽点时间出来继续写文章。

今天说的是两个注入bean的注解,在以前的时候我也一直都有疑问,同样是注入,这两者有什么区别和不同,查了一些资料,在此记录一下。
1.共同点
共同点就不多说了,就是注入bean,常用的就是注入Service和Mapper,今天的重点就是他们用户的差异。
2.不同点
(1)

  • @Autowired注解是按照类型(byType)装配依赖对象,默认情况下它要求依赖对象必须存在,如果允许null值,可以设置它的required属性为false。如果我们想使用按照名称(byName)来装配,可以结合@Qualifier注解一起使用。
  • @Resource有两个重要的属性:name和type,而Spring将@Resource注解的name属性解析为bean的名字,而type属性则解析为bean的类型。所以,如果使用name属性,则使用byName的自动注入策略,而使用type属性时则使用byType自动注入策略。如果既不制定name也不制定type属性,这时将通过反射机制使用byName自动注入策略。

(2)

  • @Autowired是Spring提供的
  • @Resource是由jdk提供的

注:最好是将@Resource放在get,set方法上,这样更符合面向对象的思想。
当然,如果出现两个相同的实现类,那么我们在注入bean的时候就要用@Qualifier或者@Primary来声明。
@Qualifier:取名字,注入的时候根据名字注入,详情可看我以前的文章。
@Primary:重要的,如果有多个实现类,标明哪个类是优先注入的。
总体来说,这两个注解一般情况下都能实现bean的注入,只是在特殊情况下才有略微的差别,根据情况来使用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值