当执行如下代码时(配置文件中未注入)

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注解相关推荐

  1. Spring框架中XML配置文件注入集合(数组、LIST、MAP、SET)属性

    Spring框架中XML配置文件注入集合属性 前言 创建测试类与属性 配置XML配置文件 建立调用类 调用结果 前言 某些类的属性是可能是集合,包括:数组.LIST.MAP.SET等集合,在Sprin ...

  2. spring框架三种类型项目实现--基础maven类型、纯注解开发型、aop结合注解开发型

    spring框架实现 1.基础maven类型 1.开发准备--pom.xml添加spring依赖 2.创建properties文件 还是三层架构开发 3.domain层创建实体类javabean 4. ...

  3. Spring Boot 自动配置的原理、核心注解以及利用自动配置实现了自定义 Starter 组件

    本章内容 自定义属性快速入门 外化配置 自动配置 自定义创建 Starter 组件 摘录:读书是读完这些文字还要好好用心去想想,写书也一样,做任何事也一样 图 2 第二章目录结构图 第 2 章 Spr ...

  4. Spring MVC自动为对象注入枚举数据

    一.实现转换工厂,定义转换实现,如下: package com.mafwo;import org.springframework.core.convert.converter.Converter; i ...

  5. spring框架自动装配的原理

    目录 1.Spring自动装配是什么?解决了什么问题? 2.自动装配实现原理: 1.Spring自动装配是什么?解决了什么问题? 自动装配就是让应用程序上下文为你找出依赖项的过程.说的通俗一点,就是S ...

  6. spring框架做全局异常捕获_@ControllerAdvice注解(全局异常捕获)

    背景 @ControllerAdvice 注解 通常用于定义@ExceptionHandler, @InitBinder和@ModelAttribute 适用于所有@RequestMapping方法的 ...

  7. 详解Spring框架的依赖注入

    本篇主要介绍Spring的依赖注入.依赖注入是Spring协调不同Bean实例之间的合作而提供的一种工作机制,在确保Bean实例之间合作的同时,并能保持每个Bean的相对独立性.通过本篇的学习,可以达 ...

  8. Spring框架的自动装配

    一.表现机制 当某个变量需要被赋值时,可以使用特定的语法,让Spring尝试从容器中找到合适的值,并自动完成赋值 最典型的表现就是添加@Autowired注解,Spring就会尝试从容器中找到合适的值 ...

  9. 详解 Spring 框架的依赖注入

    本篇主要介绍 Spring 的依赖注入.依赖注入是 Spring 协调不同 Bean 实例之间的合作而提供的一种工作机制,在确保 Bean 实例之间合作的同时,并能保持每个 Bean 的相对独立性.通 ...

最新文章

  1. OC中的归档和反归档
  2. make 操作技巧指南--gcc版本设置
  3. 《精通移动app测试实战:技术、工具和案例》新书上市
  4. 为何2018年中国自然灾害损失大幅下降?官方回应
  5. python pexpect pxssh scp_Python 的 pexpect 使用 scp 把文本文件传一半就不传了,怎么办?...
  6. 浅析Linux Kernel 哈希路由表实现(一)
  7. spark的python开发安装方式_windows下安装spark-python
  8. php radiobutton,radiobutton怎么用
  9. 亲历李飞飞的AI4ALL,是一种怎样的体验?
  10. spark性能调优05-troubleshooting处理
  11. GNS3思科模拟器详细安装教程附下载链接
  12. TouchGFX如何校准电阻触摸屏
  13. 什么是敏捷BI?和传统BI有什么不同?
  14. microsoft edge 浏览器添加兼容网址
  15. 精尽Spring Boot源码分析 - 内嵌Tomcat容器的实现
  16. 【日志记录】基于AOP实现自定义日志注解,并支持动态设置注解内容
  17. 互联网晚报 | 9月16日 星期四 | 网易云音乐发布“村民证”;阿里社区电商品牌升级为“淘菜菜”;高德打车上线“实景上车点”
  18. CES 2018前瞻:家居/音箱/AR/汽车都有什么新玩法 | 关注
  19. html中图片透明度渐变效果,三种用CSS滤镜实现的图片透明度及渐变效果
  20. STM32——EMWIN窗口小工具(十三)

热门文章

  1. FF“流产”后 许家印开始了自己的造车之路
  2. 去年购房者平均年龄为29.5岁 80后家庭人均居住面积最小
  3. 拳王虚拟项目公社:0成本的售卖高考资料的虚拟资源的其他最简单最轻松玩法
  4. 不同文件实现登录功能的数据驱动测试
  5. syslog和syslog-ng详解
  6. php给一个参数布尔值,php – 布尔值和字符串条件
  7. airpods固件更新方法_苹果发布 AirPods 新固件更新!
  8. 读芯术python答案_你爱 “Python”的身体,还是“R”的灵魂?
  9. u-boot移植随笔:继续使用svn进行版本控制(合并分支实例)
  10. linux下重启weblogic