Spring IoC 实现概述
知识回顾:
- Spring IoC,是指把 bean 的创建和管理交给 Spring 来完成。
- Spring 创建 bean 包括两个核心步骤:创建对象、注入依赖。
程序员要做的事情:
- 定义类(包含类之间的依赖关系)
- 告诉 Spring 要给哪些类创建 bean
- 需要使用 bean 时,从 Spring IoC 容器中获取 bean
xml 配置文件的方式实现 IoC 的步骤
- 用 xml 配置文件的方式实现 IoC,本质上就是用 xml 来告诉 Spring 要创建哪些 bean。
- 第一步:引入 spring-context 依赖
不要选择 6.x 的版本,Spring6 不支持 JDK 8,选择 5.x 的版本。
- 第二步:定义类
- 第三步:配置 xml 文件
配置 idea 模板:Settings -> Editor -> File and Code Templates。便于之后创建 spring 配置文件
- 第四步:从 Spring IoC 容器中获取 bean
set 注入
- 使用 set 方法完成依赖注入。利用反射调用类的无参构造函数,再调用 set 方法完成依赖注入。
- 属性为简单类型,使用 value
- 属性为 bean,使用 ref
- set 方法的名字很重要。set 方法名去掉 set 后,剩余字符串首字母小写 = bean property 的 name
构造方法注入
- 也可以使用构造方法完成依赖注入。
- 第一种方式:index,根据构造方法参数的顺序进行参数绑定
- 第二种方式:name,根据构造方法参数的名字进行参数绑定
自动装配
- 自动装配是针对 bean 类型的属性,可以不指定属性的 ref,通过自动装配的方式自动完成注入。
- 第一种方式:byType,根据类型自动装配。
- 如果只有一个 bean 的类型属于 property 的类型,那么自动完成装配。
- 如果有不止一个 bean 的类型属于 property 的类型,那么无法根据类型自动装配,会报错。
- 第二种方式:byName,根据名称自动装配。
- 因为 bean 的 id 不允许重复,根据名称能找到 Spring IoC 容器中唯一的一个 bean,自动完成装配。
- 这里名称是 set 方法去掉 set 后首字母小写。
- 如果根据名称找到的 bean 类型不匹配,报错。
- 去掉 set 方法后能否自动装配?
不能,自动装配不能去掉 set 方法。