Spring學習日記02_IOC_屬性注入_其他類型屬性

ICO操作Bean管理(xml注入其它類型屬性)

  1. 字面量
  • null值
<property name="address">
    <null></null>
</property>
  • 屬性值包含特殊符號
<!--
  1.把<>進行轉義&lt;&gt
  2.把帶特殊符號內容寫到<![CDATA[...]]>
-->
<property name="address">
  <value><![CDATA[<<南京>>]]></value>
</property>
  1. 注入屬性-外部bean
  • 創建兩個類:service類和dao類
  • 在service調用dao裡面熱點方法

service層

public class UserService {
    private UserDao userDao;
    public void setUserDao(UserDao userDao) {
        this.userDao = userDao;
    }
    public void add(){
        System.out.println("service add...");
        userDao.update();
    }
}

Dao層

public interface UserDao {
    public void update();
}
public class UserDapImpl implements UserDao {
    public void update() {
        System.out.println("Dao update...");
    }
}

xml配置文件

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="//www.springframework.org/schema/beans"
       xmlns:xsi="//www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="//www.springframework.org/schema/beans //www.springframework.org/schema/beans/spring-beans.xsd">

    <!--1.service和dao對象創建-->
    <bean id="userService" class="Spring.Ioc.Day04.service.UserService">
        <!--注入userDao對象
            name屬性:類裡面屬性名稱
            ref屬性:創建userDao對象bean標籤id值
        -->
        <property name="userDao" ref="userDaoImpl"></property>
    </bean>
    <bean id="userDaoImpl" class="Spring.Ioc.Day04.dao.UserDapImpl"></bean>
</beans>

test測試

public class testBean {
    public static void main(String[] args) {
        ApplicationContext context = new ClassPathXmlApplicationContext("bean2.xml");
        UserService userService = context.getBean("userService",UserService.class);
        userService.add();
    }
}
  1. 注入屬性-內部bean
  • 一對多關係:部門和員工
    • 一個部門有多個員工,一個員工屬於一個部門

Dept類

public class Dept {
    private String dname;
    public void setDname(String name) {
        this.dname = name;
    }
    @Override
    public String toString() {
        return "Dept{" +
                "dname='" + dname + '\'' +
                '}';
    }
}

Emp類

public class Emp {
    private String ename;
    private String gender;
    //員工屬於一個部門,使用對象形式表示
    private Dept dept;

    public void setDept(Dept dept) {
        this.dept = dept;
    }

    public void setEname(String ename) {
        this.ename = ename;
    }
    public void setGender(String gender) {
        this.gender = gender;
    }

    public void add(){
        System.out.println(ename+"::"+gender+"::"+dept);
    }
}

xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="//www.springframework.org/schema/beans"
      xmlns:xsi="//www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="//www.springframework.org/schema/beans //www.springframework.org/schema/beans/spring-beans.xsd">

   <!--內部bean-->
   <bean id="emp" class="Spring.Ioc.Day04.bean.Emp">
       <!--設置兩個普通屬性-->
       <property name="ename" value="aaa"></property>
       <property name="gender" value="man"></property>
       <!--設置對象類型屬性-->
       <property name="dept">
           <bean id="dept" class="Spring.Ioc.Day04.bean.Dept">
               <property name="dname" value="安保部"></property>
           </bean>
       </property>
   </bean>
</beans>

test類

    public void test(){
        ApplicationContext context = new ClassPathXmlApplicationContext("bean3.xml");
        Emp emp = context.getBean("emp",Emp.class);
        emp.add();
    }
  1. 注入屬性-級聯賦值
  • 第一種寫法

xml

<bean id="emp" class="Spring.Ioc.Day04.bean.Emp">
        <property name="ename" value="bbb"></property>
        <property name="gender" value="man"></property>
        <!--級聯賦值-->
        <property name="dept" ref="dept"></property>
    </bean>
    <bean id="dept" class="Spring.Ioc.Day04.bean.Dept">
        <property name="dname" value="財務部"></property>
    </bean>
  • 第二種寫法
  • 需要提供屬性的get方法

Emp類

//Dept屬性增加get方法
    public Dept getDept() {
        return dept;
    }

xml

    <bean id="emp" class="Spring.Ioc.Day04.bean.Emp">
        <property name="ename" value="bbb"></property>
        <property name="gender" value="man"></property>
        <!--級聯賦值-->
        <property name="dept.dname" value="技術部"></property>
    </bean>
Tags: