当前位置:网站首页>@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开发全套学习资料》送给大家,初衷也很简单,就是希望帮助到想自学又不知道该从何学起的朋友,同时减轻大家的负担。添加下方名片,即可获取全套学习资料哦
边栏推荐
猜你喜欢
随机推荐
我的两周年创作纪念日
2022.7.30 js笔记 运算符和流程控制符、循环
Lua安装及常用命令使用
Double Strings (don't always forget substr)
Week 304 Dunk
AntV X6制作画板工具(图形,线段,图片上传)
TRICK第二弹
2022.7.30 js notes Operators and flow controllers, loops
Kubernetes 基本概念
多个el-select下拉框无法选中相同内容
周日数据库作业
(转帖)HashCode总结(2)
MySQL8.0.26 installation and configuration tutorial (windows 64-bit)
Scaffolding installation
Small program (necessary common sense for development) 1
LeetCode:746. 使用最小花费爬楼梯【动态规划】
Day34 LeetCode
Flexbox flex property
(Reposted) The relationship between hashcode and equals
Redis安装,基本命令,持久化方式,集群









