这篇文章,详细介绍一下Spring框架中如何注入各种数据类型,包含:注入基本数据类型、数组、集合、Map映射、Property属性、注入空字符串、注入null值、注入特殊字符等内容,以及如何使用命名空间进行依赖注入。
目录
一、注入各种数据类型
1.1、注入基本类型
1.2、注入Bean对象
(1)外部注入Bean方式
(2)内部注入Bean方式
1.3、注入数组
1.4、注入List集合
1.5、注入Set集合
1.6、注入Map
1.7、注入Property属性
1.8、注入null值和空值
1.9、注入特殊字符
二、命名空间
2.1、p命名空间
2.2、c命名空间
2.3、util命名空间
注入基本数据类型,既可以采用setter方法注入,也可以采用构造方法注入,两种方式都有不同的限制条件:
这里我以setter方法注入为案例:
以上,就是setter方法注入的用法,只要在Spring的XML配置文件里面采用【
在实际开发过程中,我们一个类里面会用到另外一个类的对象,这个时候就是注入引用对象类型,也就是我们说的Bean对象。注入Bean对象,首先需要确保Bean对象已经被实例化了,然后另外一个Bean里面才能够注入。
注入Bean分为两种:
外部注入Bean方式,是指:A类中使用了B类的对象,那么首先需要将B类对象进行实例化,然后A类直接引用B类实例化之后的对象。
这里举个栗子,员工和部门的关系,我们就可以两个类来表示,一个是【Emp】员工类,另外一个是【Dept】部门类,案例代码如下所示:
创建【Dept】类:
public class Dept {
private Integer deptId;
private String deptName;
public Integer getDeptId() {
return deptId;
}
public void setDeptId(Integer deptId) {
this.deptId = deptId;
}
public String getDeptName() {
return deptName;
}
public void setDeptName(String deptName) {
this.deptName = deptName;
}
}
创建【Emp】类:
public class Emp {
private Integer empId;
private String empName;
private Dept dept; // 部门类的对象
public Integer getEmpId() {
return empId;
}
public void setEmpId(Integer empId) {
this.empId = empId;
}
public String getEmpName() {
return empName;
}
public void setEmpName(String empName) {
this.empName = empName;
}
public Dept getDept() {
return dept;
}
public void setDept(Dept dept) {
this.dept = dept;
}
}
添加XML配置
我们把这种直接引用外部Bean的方式,叫做注入外部Bean。
可以发现,我们这里使用的【
外部注入Bean方式是引用外部的一个Bean实例,那内部注入Bean就是不引用外部的Bean呗,而是直接在当前的Bean里面进行实例化。
具体XML配置如下所示:
是不是很简单,内部注入bean其实就是把另外一个bean的配置移到【
如果类中的某个属性是数组,那就不能和之前一样编写了,因为之前的都是注入单独一个的值,而数组可以有多个值,那么如何注入数组呢???
注入数组,可以借助【
采用【
注入集合和注入数组类似的,只不过注入List集合是采用【】标签进行标识。
张三
李四
王五
注入Set集合是采用【
张三
李四
王五
注入map比较特殊,因为map和List、Set集合不同,map是具有key-value形式的数据,所以注入map集合,需要采用【
【
具体案例代码如下所示:
Property是HashMap的一个子类,它也是满足key-value形式的数据集合,通过【
注入Property属性案例:
Tom
Jerry
Jack
如何定义Property文件???
首先需要创建一个以【.properties】为后缀的文件。
然后在文件中,通过【key=value】的格式,编写对应的数据内容。
注意:一行只能编写一个【key=value】。
从Property文件读取属性案例:
driver=com.jdbc.mysql.Driver
url=jdbc:mysql://localhost:3306/test
username=root
password=root
public class JdbcProperties {
private String driver;
private String url;
private String username;
private String password;
// setter and getter
}
Tom
Jerry
Jack
以上,就是注入Property类型。
如何注入null值呢???通过【
如何注入空字符串呢???直接设置【value】属性等于空即可。
在XML文件里面,有时候注入的值存在一些特殊字符(例如:<,>符号),此时XML文件会解析失败,因为(<,>符号)是XML文件规定的标签开始结束标记,我们不能在注入的值里面使用???那要如何解决这个问题呢???
解决办法:
举例如下:
从第一部分,我们学习了各种数据类型的注入方式,可以看到,每次我们注入一个属性的时候,都需要编写很多的【
这里说的【p命名空间】是用于简写【
添加【p命名空间】前缀
p命名空间使用案例
上面,可以看到我们只需要在【
这里说的【c命名空间】是用于简写【
添加【c命名空间】前缀
c命名空间使用
【c命名空间】是构造方法注入的简写,可以两种方式:
util命名空间,可以将注入集合的那些部分提取出一个公共内容,然后其他地方需要注入的时候,就可以直接引用,而不需要重复的编写。
添加【util命名空间】前缀
util命名空间的使用
【
综上,这篇文章,详细介绍一下Spring框架中如何注入各种数据类型,包含:注入基本数据类型、数组、集合、Map映射、Property属性、注入空字符串、注入null值、注入特殊字符等内容,以及如何使用命名空间进行依赖注入。