什么是bean?
由 IoC 容器管理的 Java 对象称为 Spring Bean,可通俗理解为使用关键字 new 创建的 Java 对象。
Spring 通过 IoC 容器来管理所有 Java 对象的实例化和初始化,控制对象与对象之间的依赖关系。
Spring 主要通过构造函数注入及setter 注入(又称设值注入)两种方式实现属性注入。
1、构造函数注入
使用构造函数实现属性注入大致步骤如下:
在 Bean 中添加一个有参构造函数,构造函数内的每一个参数代表一个需要注入的属性;
在 Spring 的 XML 配置文件中,通过 及其子元素 对 Bean 进行定义;
在 元素内使用 元素,对构造函数内的属性进行赋值,Bean 的构造函数内有多少参数,就需要使用多少个 元素。
2、setter 注入
使用 setter 注入的方式进行属性注入,大致步骤如下:
在 Bean 中提供一个默认的无参构造函数(在没有其他带参构造函数的情况下,可省略),并为所有需要注入的属性提供一个 setXxx() 方法;
在 Spring 的 XML 配置文件中,使用 及其子元素 对 Bean 进行定义;
在 元素内使用 元素对各个属性进行赋值。
3、短命名空间注入
Spring 框架提供了 2 种短命名空间,
p 命名空间和c 命名空间
p 命名空间注入
首先我们需要在配置文件的 元素中导入以下 XML 约束。
xmlns:p="http://www.springframework.org/schema/p"
在导入 XML 约束后,我们就能通过以下形式实现属性注入。
<bean id=“Bean 唯一标志符” class=“包名+类名” p:普通属性=“普通属性值” p:对象属性-ref=“对象的引用”>
使用 p 命名空间注入依赖时,必须注意以下 3 点:
Java 类中必须有 setter 方法;
Java 类中必须有无参构造器(类中不包含任何带参构造函数的情况,无参构造函数默认存在);
在使用 p 命名空间实现属性注入前,XML 配置的 元素内必须先导入 p 命名空间的 XML 约束。
c 命名空间注入
首先我们需要在配置文件的 元素中导入以下 XML 约束。
xmlns:c="http://www.springframework.org/schema/c"
在导入 XML 约束后,我们就能通过以下形式实现属性注入。
<bean id=“Bean 唯一标志符” class=“包名+类名” c:普通属性=“普通属性值” c:对象属性-ref=“对象的引用”>
使用 c 命名空间注入依赖时,必须注意以下 2 点:
Java 类中必须包含对应的带参构造器;
在使用 c 命名空间实现属性注入前,XML 配置的 元素内必须先导入 c 命名空间的 XML 约束。