当前位置:网站首页>@Autowired注解的使用
@Autowired注解的使用
2022-08-02 03:18:00 【bsegebr】
@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开发全套学习资料》送给大家,初衷也很简单,就是希望帮助到想自学又不知道该从何学起的朋友,同时减轻大家的负担。添加下方名片,即可获取全套学习资料哦
边栏推荐
猜你喜欢
随机推荐
关于跨域问题
C语言力扣第47题全排列 II。搜索回溯
线性代数学习笔记3-3:逆矩阵的理解
黑马案例--实现 clock 时钟的web服务器
[详解C语言]一文带你玩转C语言小游戏---扫雷
MySQL分页查询的5种方法
我的两周年创作纪念日
线性代数学习笔记1:何为线性代数
蓝鲸DevOps荣获平台类工具企业选择率第一
分布式领域最重要的一篇论文,到底讲了什么?
py0_二十一天计划书
dropout
线性代数学习笔记3-1:矩阵与线性变换、常见矩阵(逆矩阵、伴随矩阵、正交矩阵等)
手把手带你 Unity 入门之从零创建一个时钟(GameObjects 与 Scripts)
MySQL中的存储过程(详细篇)
# ODS及DWD层自动化构建##, 220731,
第一章——线性表(顺序表和链表)
【深度学习】从LeNet-5识别手写数字入门深度学习
7-35 城市间紧急救援 (25 分)c语言(测试点二未通过)
Foundry教程:使用多种方式编写可升级的智能代理合约(下)