spring笔记-02依赖注入
依赖注入(Dependency Injection,DI)。
-
构造函数注入
我们可以通过 Bean 的带参构造函数,以实现 Bean 的属性注入。使用构造函数实现属性注入大致步骤如下:
在 Bean 中添加一个有参构造函数,构造函数内的每一个参数代表一个需要注入的属性;
在 Spring 的 XML 配置文件中,通过及其子元素 对 Bean 进行定义;
在元素内使用 元素,对构造函数内的属性进行赋值,Bean 的构造函数内有多少参数,就需要使用多少个 元素。 -
Set 注入 (重点), setter 注入(又称设值注入)
要求被注入的属性 , 必须有set方法 , set方法的方法名由set + 属性首字母大写 , 如果属性是boolean类型 , 没有set方法 , 是 is.
在 Spring 实例化 Bean 的过程中,IoC 容器首先实例化 Bean(Java 对象),然后通过 Java 的反射机制调用这个 Bean 的 setXxx() 方法,将属性值注入到 Bean 中。
使用 setter 注入的方式进行属性注入,大致步骤如下:
在 Bean 中提供一个默认的无参构造函数(在没有其他带参构造函数的情况下,可省略),并为所有需要注入的属性提供一个 setXxx() 方法;
在 Spring 的 XML 配置文件中,使用及其子元素 对 Bean 进行定义;
在元素内使用 元素对各个属性进行赋值。
短命名空间注入
我们在通过构造函数或 setter 方法进行属性注入时,通常是在
p 命名空间
c 命名空间
p 命名空间注入
p 命名空间是 setter 方式属性注入的一种快捷实现方式。通过它,我们能够以 bean 属性的形式实现 setter 方式的属性注入,而不再使用嵌套的
首先我们需要在配置文件的
xmlns:p="http://www.springframework.org/schema/p"
在导入 XML 约束后,我们就能通过以下形式实现属性注入。
<bean id="Bean 唯一标志符" class="包名+类名" p:普通属性="普通属性值" p:对象属性-ref="对象的引用">
使用 p 命名空间注入依赖时,必须注意以下 3 点:
Java 类中必须有 setter 方法;
Java 类中必须有无参构造器(类中不包含任何带参构造函数的情况,无参构造函数默认存在);
在使用 p 命名空间实现属性注入前,XML 配置的
c 命名空间注入
c 命名空间是构造函数注入的一种快捷实现方式。通过它,我们能够以
首先我们需要在配置文件的
xmlns:c="http://www.springframework.org/schema/c"
在导入 XML 约束后,我们就能通过以下形式实现属性注入。
<bean id="Bean 唯一标志符" class="包名+类名" c:普通属性="普通属性值" c:对象属性-ref="对象的引用">
使用 p 命名空间注入依赖时,必须注意以下 2 点:
Java 类中必须包含对应的带参构造器;
在使用 c 命名空间实现属性注入前,XML 配置的
其它
数组注入
-
Map 注入
-
set 注入
LOL
BOB
-
Null 注入
-
Properties 注入
20190604
男
小明
p命名和c命名注入
内部 Bean
内部 Bean 都是匿名的,不需要指定 id 和 name 的。即使制定了,IoC 容器也不会将它作为区分 Bean 的标识符,随着外部的 Bean 创建。内部 Bean 是无法被注入到它所在的 Bean 以外的任何其他 Bean 的。
setter 方式注入内部 Bean
构造函数方式注入内部 Bean
我们可以通过构造方法注入内部 Bean。此时,我们只需要在

浙公网安备 33010602011771号