Spring框架----自动按照类型注入的Autowired注解
当执行如下代码时(配置文件中未注入)
private IAccountDao accountDao;
public void saveAccount() {accountDao.saveAccount();
}
运行时显示空指针异常
Autowired
作用:自动按照类型注入,只要容器中有唯一的一个bean对象类型和要注入的变量类型匹配,就可以注入成功。
出现位置:可以是成员变量上,也可以是方法上
@Autowired
private IAccountDao accountDao;
public void saveAccount() {accountDao.saveAccount();
}
细节:在使用注解注入时,set方法就可以不是必须的了
SpringIOC容器时一个Map结构。Map的key是String类型的,Map的value是Object类型的,那目前我们的容器里面有Service对象,id是对应的key。同时还有dao的id(key)和对象(value)。我们容器中现在有这两个对象。我们要注入的变量是accountDao。
private是访问修饰符,IaccountDao叫数据类型,accountDao叫变量名称。null指的是数据类型。
Autowerd作用是自动按照类型注入,它是使用了IaccountDao,接下来直接在springIOC容器中找,跳过了key,直接看value。找到了IaccountDaoImpl(虽然是实现类,可以看成接口类型,就可以注入成功),就会把它注入到这个变量中来。
如果IOC容器中没有任何bean的类型和要注入的变量匹配,则报错
如果容器中有两个实现类
@Repository("accountDao2")
public class AccountDaoImpl2 implements IAccountDao {public void saveAccount() {System.out.println("保存了账户222222");}
}
此时又来了一个dao的实现类。也可以看成dao的接口,此时就不止一个能匹配的上了。多个匹配应该是怎样的呢,默认情况会报错
试想,如果将前面的变量名改成
便可以运行成功
如果IOC容器中有多个类型匹配时,首先按照类型圈定出来匹配的对象,然后接下来会根据变量名称作为bean的id
在圈定出来的这两个里面继续查找,哪个跟他一样,如果有一样的,也可以注入成功,否则,就报错。
所以从这点上来说,要用autowired解决问题,要是两个bean都符合,就要改id,这显然不是我们想看见的。
Spring框架----自动按照类型注入的Autowired注解相关推荐
- Spring框架中XML配置文件注入集合(数组、LIST、MAP、SET)属性
Spring框架中XML配置文件注入集合属性 前言 创建测试类与属性 配置XML配置文件 建立调用类 调用结果 前言 某些类的属性是可能是集合,包括:数组.LIST.MAP.SET等集合,在Sprin ...
- spring框架三种类型项目实现--基础maven类型、纯注解开发型、aop结合注解开发型
spring框架实现 1.基础maven类型 1.开发准备--pom.xml添加spring依赖 2.创建properties文件 还是三层架构开发 3.domain层创建实体类javabean 4. ...
- Spring Boot 自动配置的原理、核心注解以及利用自动配置实现了自定义 Starter 组件
本章内容 自定义属性快速入门 外化配置 自动配置 自定义创建 Starter 组件 摘录:读书是读完这些文字还要好好用心去想想,写书也一样,做任何事也一样 图 2 第二章目录结构图 第 2 章 Spr ...
- Spring MVC自动为对象注入枚举数据
一.实现转换工厂,定义转换实现,如下: package com.mafwo;import org.springframework.core.convert.converter.Converter; i ...
- spring框架自动装配的原理
目录 1.Spring自动装配是什么?解决了什么问题? 2.自动装配实现原理: 1.Spring自动装配是什么?解决了什么问题? 自动装配就是让应用程序上下文为你找出依赖项的过程.说的通俗一点,就是S ...
- spring框架做全局异常捕获_@ControllerAdvice注解(全局异常捕获)
背景 @ControllerAdvice 注解 通常用于定义@ExceptionHandler, @InitBinder和@ModelAttribute 适用于所有@RequestMapping方法的 ...
- 详解Spring框架的依赖注入
本篇主要介绍Spring的依赖注入.依赖注入是Spring协调不同Bean实例之间的合作而提供的一种工作机制,在确保Bean实例之间合作的同时,并能保持每个Bean的相对独立性.通过本篇的学习,可以达 ...
- Spring框架的自动装配
一.表现机制 当某个变量需要被赋值时,可以使用特定的语法,让Spring尝试从容器中找到合适的值,并自动完成赋值 最典型的表现就是添加@Autowired注解,Spring就会尝试从容器中找到合适的值 ...
- 详解 Spring 框架的依赖注入
本篇主要介绍 Spring 的依赖注入.依赖注入是 Spring 协调不同 Bean 实例之间的合作而提供的一种工作机制,在确保 Bean 实例之间合作的同时,并能保持每个 Bean 的相对独立性.通 ...
最新文章
- OC中的归档和反归档
- make 操作技巧指南--gcc版本设置
- 《精通移动app测试实战:技术、工具和案例》新书上市
- 为何2018年中国自然灾害损失大幅下降?官方回应
- python pexpect pxssh scp_Python 的 pexpect 使用 scp 把文本文件传一半就不传了,怎么办?...
- 浅析Linux Kernel 哈希路由表实现(一)
- spark的python开发安装方式_windows下安装spark-python
- php radiobutton,radiobutton怎么用
- 亲历李飞飞的AI4ALL,是一种怎样的体验?
- spark性能调优05-troubleshooting处理
- GNS3思科模拟器详细安装教程附下载链接
- TouchGFX如何校准电阻触摸屏
- 什么是敏捷BI?和传统BI有什么不同?
- microsoft edge 浏览器添加兼容网址
- 精尽Spring Boot源码分析 - 内嵌Tomcat容器的实现
- 【日志记录】基于AOP实现自定义日志注解,并支持动态设置注解内容
- 互联网晚报 | 9月16日 星期四 | 网易云音乐发布“村民证”;阿里社区电商品牌升级为“淘菜菜”;高德打车上线“实景上车点”
- CES 2018前瞻:家居/音箱/AR/汽车都有什么新玩法 | 关注
- html中图片透明度渐变效果,三种用CSS滤镜实现的图片透明度及渐变效果
- STM32——EMWIN窗口小工具(十三)
热门文章
- FF“流产”后 许家印开始了自己的造车之路
- 去年购房者平均年龄为29.5岁 80后家庭人均居住面积最小
- 拳王虚拟项目公社:0成本的售卖高考资料的虚拟资源的其他最简单最轻松玩法
- 不同文件实现登录功能的数据驱动测试
- syslog和syslog-ng详解
- php给一个参数布尔值,php – 布尔值和字符串条件
- airpods固件更新方法_苹果发布 AirPods 新固件更新!
- 读芯术python答案_你爱 “Python”的身体,还是“R”的灵魂?
- u-boot移植随笔:继续使用svn进行版本控制(合并分支实例)
- linux下重启weblogic