Spring学习(2)—— IOC容器-Bean管理(xml方式)注入各种类型数据

一. 注入空值和特殊符号

创建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>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值