Spring @AutoWired注解用法解释(超级易懂)

12 篇文章 0 订阅
订阅专栏
9 篇文章 0 订阅
订阅专栏
本文介绍了@Autowired注解在Spring框架中的应用场景,说明了如何通过该注解实现依赖注入,简化对象创建过程。通过示例展示了在类属性和方法上使用@Autowired的用法,并提到了与@Qualifier和@Resource的配合使用,以及它们之间的区别。此外,还强调了@Autowired的required属性对于允许注入对象是否可为空的控制。
摘要由CSDN通过智能技术生成

@Autowired的应用场景

我们开启Spring服务的时候,它会根据声明先扫描配置文件中的bean(注解配置同理), 再根据bean中类的全限定名去寻找它,一般为我们自己声明的pojo(实体类), 然后这时如果有@Autowired注解则会根据类型寻找其它的被Spring托管的bean进行自动注入, 调用默认的构造函数。

用法解释

下面看一个简单的例子:
这里是一个spring项目的基本结构
在这里插入图片描述
我们有三个实体类并且都是spring的bean
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
Test方法
在这里插入图片描述
注意到我们这里的people类中的cat和dog上都标注了@Autowired,我们都很清楚对象的声明创建过程, 类似于people的组合类需要先创建cat对象和dog对象的实例, 而依靠spring的依赖注入(cat和dog已被spring托管), 我们再加上@Autowired, spring便会自动的为我们在bean中寻找和注解下类型匹配的bean去进行自动注入。 借此机制我们可以省略掉set方法, 构造方法。

执行test方法
运行成功, 未报空指针异常, 说明cat和dog被自动创建及注入。

还有一个注意点是如果显示的定义了Autowired的required属性为false,说明这个对象可以为null,否则不允许为空

@Autowired(required = false)

使用的位置

我们可以在类中属性上,方法上使用@Autowired注解, 其中用在方法上时spring会将参数依次寻找bean注入, 需要注意的是参数一定都要找到能够匹配的bean, 否则会报出异常

org.springframework.beans.factory.BeanCreationException

@Autowired和@Qualifier组合使用

如果您在bean中有相同的类的全限定名, 那么在应用@Autowired时按照逻辑来说就会出现歧义, 这时spring为我们准备了@Qualifier注解来解决这个问题。

public class People{
    @Autowired
    @Qualifier(value = "cat11")
    private Cat cat;

    @Autowired
    @Qualifier(value = "dog222")
    private Dog dog;
 
    private String name;
}

在这里插入图片描述
在这里由于spring无法由类型去装配了,使用@Qualifier可以通过byName方式去寻找标准就是bean的id(唯一限定名)。

@AutoWired和@Resource的区别?

@AutoWired默认以类型进行查找,@Resource默认以名称进行查找

@AutoWired(required=false) + @Qualifier(“user”) == @Resource(name=“user”)

其中@Resource注解是jdk1.6后才有的

结语

以上为个人的一点理解,说的可能不对欢迎指正。

Spring Boot进阶(57):Spring中@Autowired不适用的场景,不要掉进坑里!
**My Coding Family**
07-19 1568
Spring中什么时候不要用@Autowired注入?你若不会我可以教你。
简述@Autowired和@Resource的区别(通俗易懂
黄团团的个人博客
09-06 6122
本文章对@Autowired和@Resource两个注解通过典型案例和结论详细简述了它们两个的区别,思路清晰明了!
Spring注解@Autowired
weixin_52754604的博客
10-24 2035
(1)、带有@Autowired注解的构造方法,在Spring初始化对象实例时,会被调用进行对象的实例化。(2)、如果构造方法上带有了@Autowired注解,那么这个构造方法就算不是public修饰的也可以被实例化。(3)、当一个对象只有一个构造方法时,Spring实例化对象会默认选择这个构造方法进行实例化,无需加@Autowired注解。只有存在了多个构造方法时,才用加@Autowired注解,告诉Spring选择那个构造方法进行实例化。
Spring@Autowired注解与自动装配
热门推荐
和大黄的博客
11-02 53万+
<br />1   配置文件的方法<br /> <br />我们编写spring 框架的代码时候。一直遵循是这样一个规则:所有在spring中注入的bean 都建议定义成私有的域变量。并且要配套写上 get 和 set方法。<br /> <br /><br />Boss 拥有 Office 和 Car 类型的两个属性:   <br />  <br />  <br />清单 3. Boss.java<br /> <br />package com.baobaotao; public class
Spring中的@Autowired注解:深入解析与实战指南
最新发布
xycxycooo的博客
09-22 1742
依赖注入是一种设计模式,用于将对象的依赖关系从代码中分离出来,通过外部容器(如Spring容器)来管理这些依赖关系。依赖注入使得代码更加松耦合,易于测试和维护。@Autowired注解Spring框架中非常重要的一个注解,用于实现依赖注入。通过@Autowired注解Spring容器可以自动将依赖的Bean注入到目标Bean中,从而简化代码并提高可维护性。在实际项目中,@Autowired注解广泛应用于服务层、控制器层、配置类等场景。希望这篇文章能帮助你更好地理解@Autowired
Spring之@Autowired
zhuhaoyu6666的博客
03-13 2345
@Autowired 与@Resource的区别: 1、@Autowired与@Resource都可以用来装配bean. 都可以写在字段上,或写在setter方法上。 2、@Autowired默认按类型装配(这个注解是属业spring的),默认情况下必须要求依赖对象必须存在,如果要允许null值,可以设置它的required属性为false,如:@Autowired(required=fa...
@Autowired spring
wudaimian
04-09 89
使用 @Autowired 注解进行装配,只能是根据类型进行匹配。@Autowired 注解可以用于 Setter 方法、构造函数、字段,甚至普通方法,前提是方法必须有至少一个参数。@Autowired 可以用于数组和使用泛型的集合类型。然后 Spring 会将容器中所有类型符合的 Bean 注入进来。@Autowired 标注作用于 Map 类型时,如果 Map 的 key 为 String...
Spring @Autowired
04-02
NULL 博文链接:https://zhangzhenting.iteye.com/blog/1455511
@Autowired注解详解
08-30
@Autowired注解用于自动装配Spring容器中的Bean。当标注在构造函数上时,会将符合类型的Bean自动注入到构造函数中作为参数。如果属性是一个接口类型,它会根据类型找到对应的实现类进行注入。如果有多个实现类,可以...
面试官:@Autowired, @Resource, @Inject 有什么区别?建议怎么使用?
m0_71777195的博客
09-02 369
使用这种基于 field 注入的方式,添加依赖是很简单的,就算你的类中有十几个依赖你可能都觉得没有什么问题,普通的开发者很可能会无意识地给一个类添加很多的依赖。这是我平常开发中看的最多也是最熟悉的一种方式,同时,也正是 Spring 团队所不推荐的方式。基于 setter 的注入,则只应该被用于注入非必需的依赖,同时在类中应该对这个依赖提供一个合理的默认值。将各个必需的依赖全部放在带有注解构造方法的参数中,并在构造方法中完成对应变量的初始化,这种方式,就是基于构造方法的注入。
Intellij IDEA 如何去掉 @Autowired 注入警告(1)
A1867350的博客
04-23 904
无论是哪家公司,都很重视高并发高可用的技术,重视基础,重视JVM。面试是一个双向选择的过程,不要抱着畏惧的心态去面试,不利于自己的发挥。同时看中的应该不止薪资,还要看你是不是真的喜欢这家公司,是不是能真的得到锻炼。其实我写了这么多,只是我自己的总结,并不一定适用于所有人,相信经过一些面试,大家都会有这些感触。最后我整理了一些面试真题资料,技术知识点剖析教程,还有和广大同仁一起交流学习共同进步,还有一些职业经验的分享。《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》
spring autowired注解完整版
07-23
autowired spring autowired注解完整版 使用Spring2.5的新特性——Autowired可以实现快速的自动注入,而无需在xml文档里面添加bean的声明,大大减少了xml文档的维护。(偶喜欢这个功能,因为偶对xml不感冒)。
spring 注解Autowired、service、Autowired 的使用
04-19
NULL 博文链接:https://huihai.iteye.com/blog/1880106
Springautowired
weixin_30590285的博客
10-23 101
Springautowired主要用于装配树形值,其关键类为BeanWrapperImpl,阅读代码发现其关键方法setPropertyValue有如下一段代码。 1 PropertyHandler ph = getLocalPropertyHandler(actualName); 2 if (ph == null || !ph.isWritable())...
Spring @Autowired详解
susht
04-24 1853
1.概述 从Spring 2.5开始,spring框架引入了由@Autowired注解驱动的依赖注入。此注释允许Spring解析并将有依赖关系的bean注入到bean中。 在本文中,我们将了解如何启用自动装配、如何设置自动装配、设置@Autowired可选依赖属性、使用@Qualifier注释解决bean冲突以及潜在的异常场景。 2.启用@Autowired注解 如果应用程序是基于Java的配置,...
Spring@Autowired注解
sunp823的专栏
05-30 109
@Autowired注解可以对成员变量、方法和构造函数进行标注,来完成自动装配的工作。 注意:@Autowired默认是按照类型来注入的。 看下面的例子:例子是以对成员变量(field)为例进行的 public class Person { private String name; private String address; private int age; ...
Spring 之 @Autowired 详解
岁月安然
05-30 1442
概念 @Autowired是一种注解,可以对成员变量、方法和构造函数进行标注,来完成自动装配的工作,@Autowired标注可以放在成员变量上,也可以放在成员变量的set方法上,也可以放在任意方法上表示,自动执行当前方法,如果方法有参数,会在IOC容器中自动寻找同类型参数为其传值。 这里必须明确:@Autowired是根据类型进行自动装配的,如果需要按名称进行装配,则需要配合@Qualifier使用; 核心 我们先来看下实现的核心类 AutowiredAnnotationBeanPostProcessor
Spring——Autowired注解
b15735105314的博客
02-01 894
上面的情况虽然在配置的时候允许属性为空(即找不到对应的bean),但同样的要在使用的使用判断该属性是否为空,否则可能会在使用使抛出空指针异常 @Autowired注解的入门使用示例 <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XM...
写文章

热门文章

  • datagrip使用教程:如何查看表数据关系图(用于架构和数据库优化) 16186
  • idea不生成out文件夹的解决办法 16034
  • SQL中的rand()函数用法和应用场景 5836
  • tomcat Application context 新版idea配置 3136
  • Error creating bean with name ‘org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping#0‘ 2862

分类专栏

  • 笔记 12篇
  • mybatis 1篇
  • Java 9篇
  • Mysql 2篇
  • SSM 2篇
  • idea 1篇
  • Bug 3篇

最新评论

  • datagrip使用教程:如何查看表数据关系图(用于架构和数据库优化)

    熊猫发电厂: 可以直接拖拽过来

  • datagrip使用教程:如何查看表数据关系图(用于架构和数据库优化)

    wishingpep: 选中表后右键 New -> Virtual Foreign Key ,或者用官方文档里写的创建方式:https://www.jetbrains.com/help/datagrip/virtual-foreign-keys.html

  • tomcat Application context 新版idea配置

    CityStep: wc我弄了一晚上还装了好几个版本

  • idea不生成out文件夹的解决办法

    m0_74295394: 还是失败了

  • idea不生成out文件夹的解决办法

    再犯: 磁盘不生成out无法创建 类 怎么解决

最新文章

  • VScode解决C/C++输出中文控制台乱码问题
  • Mybatis资源配置文件中#{}和${}区别
  • EL表达式的理解
2021年13篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值

玻璃钢生产厂家采购玻璃钢雕塑西洋棋不锈钢牛玻璃钢卡通雕塑定做玻璃钢花盆的好处枣庄景区玻璃钢雕塑价格拉萨园林玻璃钢雕塑订做知名的玻璃钢花盆玻璃钢天猫雕塑工厂玻璃钢天猫雕塑厂家苏州玻璃钢雕塑摆件价钱公园摆件玻璃钢雕塑包括哪些梅州树脂玻璃钢雕塑厂家湖南特色玻璃钢雕塑市场上海开业商场美陈供货商十堰仿铜玻璃钢雕塑公司玻璃钢孔子雕塑哪家质量好广州商业街玻璃钢雕塑生产厂家北海玻璃钢雕塑作品湖南户内玻璃钢雕塑生产厂家湖南玻璃钢人物雕塑定制北京季节性商场美陈市场价玻璃钢红军卡通雕塑信念商场美陈郑州批发玻璃钢雕塑性价比出众三门峡玻璃钢人物雕塑制作价格玻璃钢造型雕塑哪家专业深圳室内商场美陈销售公司广西玻璃钢雕塑定制仙林商场中秋美陈玻璃钢户外雕塑公司南宁玻璃钢艺术雕塑厂家香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警汪小菲曝离婚始末遭遇山火的松茸之乡雅江山火三名扑火人员牺牲系谣言何赛飞追着代拍打萧美琴窜访捷克 外交部回应卫健委通报少年有偿捐血浆16次猝死手机成瘾是影响睡眠质量重要因素高校汽车撞人致3死16伤 司机系学生315晚会后胖东来又人满为患了小米汽车超级工厂正式揭幕中国拥有亿元资产的家庭达13.3万户周杰伦一审败诉网易男孩8年未见母亲被告知被遗忘许家印被限制高消费饲养员用铁锨驱打大熊猫被辞退男子被猫抓伤后确诊“猫抓病”特朗普无法缴纳4.54亿美元罚金倪萍分享减重40斤方法联合利华开始重组张家界的山上“长”满了韩国人?张立群任西安交通大学校长杨倩无缘巴黎奥运“重生之我在北大当嫡校长”黑马情侣提车了专访95后高颜值猪保姆考生莫言也上北大硕士复试名单了网友洛杉矶偶遇贾玲专家建议不必谈骨泥色变沉迷短剧的人就像掉进了杀猪盘奥巴马现身唐宁街 黑色着装引猜测七年后宇文玥被薅头发捞上岸事业单位女子向同事水杯投不明物质凯特王妃现身!外出购物视频曝光河南驻马店通报西平中学跳楼事件王树国卸任西安交大校长 师生送别恒大被罚41.75亿到底怎么缴男子被流浪猫绊倒 投喂者赔24万房客欠租失踪 房东直发愁西双版纳热带植物园回应蜉蝣大爆发钱人豪晒法院裁定实锤抄袭外国人感慨凌晨的中国很安全胖东来员工每周单休无小长假白宫:哈马斯三号人物被杀测试车高速逃费 小米:已补缴老人退休金被冒领16年 金额超20万

玻璃钢生产厂家 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化