目录
- 一 Set 注入详解
- 1 构造实体类student,address
- 2 配置xml
- 3 测试
- 4 分析set几种注入方式的细节
- 细节1
- 细节2
- 细节3
- 5 引申
- 6 SUM
- 二 C命名和P命名空间注入
- 1 创建实体类User
- 2 配置xml
- 3 测试
- 4 SUM
一 Set 注入详解
在Spring入门理解(一)的文章了解到,spring实现控制反转的手段是set注入,构造函数注入等等
这里将详细的介绍set注入的几种实现形式
DI依赖注入(称为set注入是一回事)的8种方式
- 普通属性
- 空值
- 引用对象
- 数组
- List
- Map
- Set
- Properties
1 构造实体类student,address
2 配置xml
3 测试
4 分析set几种注入方式的细节
细节1
细节2
< props > 是简化了的 < map > ,该元素对应配置类型为 java.util.Properties 的对象依赖。
因为Properties 只能指定 String 类型的键和值,所以 < props > 的配置简化很多,只有固定的格式。
细节3
日常使用掌握Map,List即可
5 引申
思考:这8种类型是基本类型,如果我们开发的时候使用的属性是自定义的,不属于这8种怎么办?案例如【spring入门理解(一)】
这时候就需要使用到自定义类型
<bean id="userDAO" class="com.yusael.dao.UserDAOImpl"></bean>
<bean id="userService" class="com.yusael.service.UserServiceImpl">
<property name="userDAO">
<ref bean="userDAO"/>
</property>
</bean>
此代码也可以进一步简化
<bean id="userDAO" class="com.yusael.dao.UserDAOImpl"></bean>
<bean id="userService" class="com.yusael.service.UserServiceImpl">
<property name="userDAO" ref="userDAO"/>
</bean>
6 SUM
- 实现注入的方式有很多,主要是Set注入
- set注入分为8种基本类型的注入和用户自定义注入
参考文章:
二 C命名和P命名空间注入
先看看官网怎么要求的,需要导入一些配置
1 创建实体类User
注意此处没有创建无参和有参构造函数
package com.kuang.pojo;
/*
* @ author:Ove
* @ create:2022/03/23
* */
public class User {
private String name;
private int age;
public User() {
}
public User(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "User{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
}
2 配置xml
发现c命名出有问题,原来是缺少有参构造函数
在User添加有参构造函数之后,发现 c: 问题解决:说明c背后原理是有参构造函数注入
但是p命名处又报错
添加了无参构造函数之后,问题解决
3 测试
4 SUM
我们发现,cp命名空间十分简单,但是仍然在xml文件里面操作,之后会介绍使用注解方式注入