@Autowired注解的使用

112 篇文章 2 订阅
110 篇文章 2 订阅

@Autowired表示一个属性是否需要进行依赖注入,可以使用在属性、普通方法上、构造方法上。注解中的required属性默认是true,如果没有对象可以注入到属性,则会报出异常;

@Autowired加在某个属性上,spring会从ioc容器中找到bean对象注入到属性上,如果找到多个该类型的Bean对象,则再根据属性的名字从多个Bean对象中确认一个;

@Autowired写在set()方法上,在spring会根据方法的参数类型从ioc容器中找到该类型的Bean对象注入到方法的行参中,并且自动反射调用该方法(被@Autowired修饰的方法一定会执行),所以一般使用在set方法中、普通方法不用;

@Autowired使用在构造方法中:根据构造方法的形参、形参名,从ioc容器中找到该类型的Bean对象,注入到构造方法的形参中,并且执行该方法;

@Autowired注解在进行依赖注入的时候需要指定bean的时候,和@Qualifier注解一起使用使用@qualifier注解指定名称

?
  //构造方法
    @Autowired
    public Bean03(Bean04 bean04) {
        System.out.println("11111111111111");
    }
    //属性上
    @Autowired
    Bean04 bean04;
  
    //set方法
    @Autowired
    public void setBean04(Bean04 bean) {
        this.bean04 = bean;
    }
    //普通方法
   @Autowired
    public void commonMethod(Bean04 bean04){
        System.out.println("普通方法的执行");
    }

?

@Autowired使用在构造方法上的细节

在同一个类上有多个构造方法上使用了@Autowired,默认情况下会报错;

解决方法:可以把@Autowired的属性required设置成为false,此时spring会自己选择使用哪一种构造方法;

spring在上述情况下的选择规则:

1.会优先考虑参数多的

(先ByType找到多个该类型的bean,再ByName进行注入)

2.如果多个类型的bean按照ByName无法注入,则去考虑参数少的进行注入,依次类推;

3.在参数个数相同、ByName,也可以注入的情况下,按照构造方法的书写顺序进行选择;

先自我介绍一下,小编13年上师交大毕业,曾经在小公司待过,去过华为OPPO等大厂,18年进入阿里,直到现在。深知大多数初中级java工程师,想要升技能,往往是需要自己摸索成长或是报班学习,但对于培训机构动则近万元的学费,着实压力不小。自己不成体系的自学效率很低又漫长,而且容易碰到天花板技术停止不前。因此我收集了一份《java开发全套学习资料》送给大家,初衷也很简单,就是希望帮助到想自学又不知道该从何学起的朋友,同时减轻大家的负担。添加下方名片,即可获取全套学习资料哦

  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值