关于@Autowired

Springboot系列


前言

@Autowired使用剖析,与@Resource的区别


目录

Springboot系列

前言

一、@Autowired

二、@Autowired和@Resource的区别

1.相同点:

2.区别:

总结:

一、@Autowired

Spring IoC容器通过该注解将容器的实现类注入到实例中。

二、@Autowired和@Resource的区别

1.相同点:

两者都是Spring在注入对象时使用的注解。

2.区别:

(1)@Resource注解时JDK自带的,@Autowired注解是Spring框架中是实现的。

(2)默认的装配方式不一样,@Resource默认按照名称来注入;@Autowired默认按照类型来注入。

总结:


1.@Autowired

        当一个service接口有两个实现类时,使用@Autowired需要注意的是:属性名需要和你的实现类的类名一样,但需要使用驼峰命名的形式(小写类名首字母)。因为它的规则是:首先它会根据类型(type)找到对应的 Bean, 如果对应类型的 Bean 不是唯一的,那么它会根据其属性名称和 Bean 的名称进行匹配。如果匹配得上,就会使用该Bean :如果还无法匹配,就会抛出异常。
        虽然说一个interface下面有多个实现类时,使用实现类的类名首字母小写其余不变的方式可以消除歧义,但是,还有更加专业的写法,就是使用@Qualifier("属性名")和@Autowired配合使用即可。

@Autowired@Qualifier("dog")
private Animal animal;

          也可以指定一个默认的Bean,使用的是 @Primary,加在实现类上面,表示优先级比没有加@Primary注解的实现类的优先级高,但是如果多个实现类都使用了@Primary,那么同样会造成起义,因此,使用@Primary注解有一种初始化时,指定默认值的感觉。
        另外,@Autowired还有一个特点:在默认情况下,@Autowired注解要求一定要找到对应的Bean,什么意思呢?如果找不到实现类,就会抛出异常。为了允许找不到的情况合理存在,需要设置@Autowired的required = false,这样就不会抛出异常了,虽然说可以正常编译,但是调用的时候会产生空指针异常。

@Autowired(required = false)

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

何怀逸

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值