一. 注入空值和特殊符号
创建User类
package pojo;
public class User {
private String userName;
private String password;
public void setUserName(String userName) {
this.userName = userName;
}
public void setPassword(String password) {
this.password = password;
}
@Override
public String toString() {
return "User{" +
"userName='" + userName + '\'' +
", password='" + password + '\'' +
'}';
}
}
创建配置文件来生成对象并给 对象的属性赋值
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<!-- 创建对象 -->
<bean id="user" class="pojo.User">
<!-- 注入属性-->
<property name="userName"> <null/> </property> <!-- 设置空值-->
<property name="password"> <value> <![CDATA[<<123>]]> </value> </property> <!-- 设置特殊符号:把特殊符号内容写到CDATA中-->
</bean>
</beans>
测试结果:
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import pojo.User;
public class testSpring {
@Test
public void testUser() {
//加载配置文件
ApplicationContext context = new ClassPathXmlApplicationContext("pojo/User.xml");
//获取配置文件创建的对象
User user = context.getBean("user", User.class);
System.out.println(user.toString()); //User{userName='null', password=' <<123> '}
}
}
二. 注入外部JavaBean和注入Java内部Bean
创建部门类
package pojo;
public class Dept {
private String deptName;
public void setDeptName(String deptName) {
this.deptName = deptName;
}
public String getDeptName() {
return deptName;
}
@Override
public String toString() {
return "Dept{" +
"deptName='" + deptName + '\'' +
'}';
}
}
创建员工类
package pojo;
public class Emp {
private Integer empId;
private String empName;
private Dept dept; //表示员工属于某一个部门
public void setEmpId(Integer empId) {
this.empId = empId;
}
public void setEmpName(String empName) {
this.empName = empName;
}
public void setDept(Dept dept) {
this.dept = dept;
}
public Integer getEmpId() {
return empId;
}
public String getEmpName() {
return empName;
}
public Dept getDept() {
return dept;
}
@Override
public String toString() {
return "Emp{" +
"empId=" + empId +
", empName='" + empName + '\'' +
", dept=" + dept +
'}';
}
}
1. 设置配置文件,使用外部Bean的方式(方式一)
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<!-- 创建Dept类的对象-->
<bean id="dept" class="pojo.Dept">
<property name="deptName" value="开发部门"></property>
</bean>
<!-- 创建内部类Emp类的对象-->
<bean id="emp" class="pojo.Emp">
<!-- 设置普通属性-->
<property name="empId" value="1"></property>
<property name="empName" value="Tom"></property>
<!-- 设置对象类型属性-->
<property name="dept" ref="dept"></property>
</bean>
</beans>
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import pojo.Emp;
public class testSpring {
@Test
public void testEmp() {
//加载配置文件
ApplicationContext context = new ClassPathXmlApplicationContext("EmpDept.xml");
//获取配置文件创建的对象
Emp emp = context.getBean("emp", Emp.class);
System.out.println(emp.toString()); //Emp{empId=1, empName='Tom', dept=Dept{deptName='开发部门'}}
}
}
设置配置文件,使用外部Bean的方式(方式二)
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<!-- 创建Dept类的对象-->
<bean id="dept" class="pojo.Dept"></bean>
<!-- 创建内部类Emp类的对象-->
<bean id="emp" class="pojo.Emp">
<!-- 设置普通属性-->
<property name="empId" value="1"></property>
<property name="empName" value="Tom"></property>
<!-- 设置对象类型属性-->
<property name="dept" ref="dept"></property>
<property name="dept.deptName" value="开发部门"></property>
</bean>
</beans>
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import pojo.Emp;
public class testSpring {
@Test
public void testEmp() {
//加载配置文件
ApplicationContext context = new ClassPathXmlApplicationContext("EmpDept.xml");
//获取配置文件创建的对象
Emp emp = context.getBean("emp", Emp.class);
System.out.println(emp.toString()); //Emp{empId=1, empName='Tom', dept=Dept{deptName='开发部门'}}
}
}
2. 设置配置文件,使用内部Bean的方式
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<!-- 创建内部类Emp类的对象-->
<bean id="emp" class="pojo.Emp">
<!-- 设置普通属性-->
<property name="empId" value="1"></property>
<property name="empName" value="Tom"></property>
<!-- 设置对象类型属性-->
<property name="dept">
<bean id="dept" class="pojo.Dept">
<property name="deptName" value="开发部门"></property>
</bean>
</property>
</bean>
</beans>
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import pojo.Emp;
public class testSpring {
@Test
public void testEmp() {
//加载配置文件
ApplicationContext context = new ClassPathXmlApplicationContext("EmpDept.xml");
//获取配置文件创建的对象
Emp emp = context.getBean("emp", Emp.class);
System.out.println(emp.toString()); //Emp{empId=1, empName='Tom', dept=Dept{deptName='开发部门'}}
}
}
三. 注入集合类型
package pojo;
public class Course {
private String courseName;
public Course() {
}
public Course(String courseName) {
this.courseName = courseName;
}
public String getCourseName() {
return courseName;
}
public void setCourseName(String courseName) {
this.courseName = courseName;
}
@Override
public String toString() {
return "Course{" +
"courseName='" + courseName + '\'' +
'}';
}
}
package pojo;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
public class Student {
private String name;
private String[] hobby;
private List<String> list;
private List<Course> courses;
private Map<String,String> map;
public Student() {
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String[] getHobby() {
return hobby;
}
public void setHobby(String[] hobby) {
this.hobby = hobby;
}
public List<String> getList() {
return list;
}
public void setList(List<String> list) {
this.list = list;
}
public List<Course> getCourses() {
return courses;
}
public void setCourses(List<Course> courses) {
this.courses = courses;
}
public Map<String, String> getMap() {
return map;
}
public void setMap(Map<String, String> map) {
this.map = map;
}
@Override
public String toString() {
return "Student{" +
"name='" + name + '\'' +
", hobby=" + Arrays.toString(hobby) +
", list=" + list +
", courses=" + courses +
", map=" + map +
'}';
}
}
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<!-- 创建Course对象 -->
<bean id="course1" class="pojo.Course">
<property name="courseName" value="Spring"></property>
</bean>
<bean id="course2" class="pojo.Course">
<property name="courseName" value="MyBatis"></property>
</bean>
<!-- 创建Student对象 -->
<bean id="student" class="pojo.Student">
<property name="name" value="Tom"></property> <!-- 注入普通类型属性 -->
<property name="hobby"> <!-- 注入数组类型属性 -->
<array>
<value>唱歌</value>
<value>跳舞</value>
</array>
</property>
<property name="list"> <!-- 注入List集合类型属性,值是普通类型 -->
<list>
<value>Java</value>
<value>C++</value>
</list>
</property>
<property name="courses"> <!-- 注入List集合类型属性,值是对象类型 -->
<list>
<ref bean="course1"></ref>
<ref bean="course2"></ref>
</list>
</property>
<property name="map"> <!-- 注入Map集合类型属性,值是普通类型 -->
<map>
<entry key="Java" value="张梅"></entry>
<entry key="C++" value="王刚"></entry>
</map>
</property>
</bean>
</beans>
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import pojo.Student;
public class testSpring {
@Test
public void testStudent() {
//加载配置文件
ApplicationContext context = new ClassPathXmlApplicationContext("Student.xml");
//获取配置文件创建的对象
Student student = context.getBean("student", Student.class);
System.out.println(student.toString()); //Student{name='Tom', hobby=[唱歌, 跳舞], list=[Java, C++], courses=[Course{courseName='Spring'}, Course{courseName='MyBatis'}], map={Java=张梅, C++=王刚}}
}
}
可以将上述注入数组、List类型、Map类型的部分单独提取出来
需要先在头部添加xmlns:util
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:util="http://www.springframework.org/schema/util"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd">
<!-- 创建Course对象 -->
<bean id="course1" class="pojo.Course">
<property name="courseName" value="Spring"></property>
</bean>
<bean id="course2" class="pojo.Course">
<property name="courseName" value="MyBatis"></property>
</bean>
<util:set id="hobby">
<value>唱歌</value>
<value>跳舞</value>
</util:set>
<util:list id="list">
<value>Java</value>
<value>C++</value>
</util:list>
<util:list id="courses">
<ref bean="course1"></ref>
<ref bean="course2"></ref>
</util:list>
<util:map id="map">
<entry key="Java" value="张梅"></entry>
<entry key="C++" value="王刚"></entry>
</util:map>
<!-- 创建Student对象 -->
<bean id="student" class="pojo.Student">
<property name="name" value="Tom"></property> <!-- 注入普通类型属性 -->
<property name="hobby" ref="hobby"></property> <!-- 注入数组类型属性 -->
<property name="list" ref="list"></property> <!-- 注入List集合类型属性,值是普通类型 -->
<property name="courses" ref="courses"></property> <!-- 注入List集合类型属性,值是对象类型 -->
<property name="map" ref="map"></property> <!-- 注入Map集合类型属性,值是普通类型 -->
</bean>
</beans>