Spring_IOC容器:注入其他类型属性1(Bean管理)

本篇记:注入1.字面量2.注入属性-外部bean ,3.注入属性-内部bean  4.注入属性-级联赋值

1.字面量

  • null值
   <property name="address">
       <null/>
   </property>
  •  属性值包含特殊符号(<<>>如何在xml中输入)
    <!--属性值包含特殊符号
    1.把<>进行转义,&lt;&gt;
    2.把带特殊符号内容写到CDATA
    -->
    <property name="address">
      <value><![CDATA[<<南京>>]]></value>
    </property>

2.注入属性-外部bean

(1).创建两个类service类和dao类

userService.java

package com.tinstu.spring.service;
import com.tinstu.spring.dao.UserDao;
public class UserService {
    //创建UserDao类型属性,生成set方法
    private UserDao userDao;
    public void setUserDao(UserDao userDao){
        this.userDao = userDao ;
    }
    public void add(){
        System.out.println("add......");
        userDao.updata();
        //原始方式创建UserDao对象
        //UserDao userdao = new UserDaoImpl();
        //userdao.updata();
    }
}

UserDao.java

package com.tinstu.spring.dao;
public interface UserDao {
    public void updata();
}

UserDaoImpl.java

package com.tinstu.spring.dao;
public class UserDaoImpl implements UserDao{
    @Override
    public void updata() {
        System.out.println("dao updata.....");
    }
}

(2).在service调用dao里面的方法.

(3).在spring配置文件中进行配置

<!--service和dao对象创建-->
    <bean id="userService" class="com.tinstu.spring.service.UserService">
        <!--注入userDao对象
        name属性:类里面属性名称
        ref属性:创建UserDao对象bean标签id值
        -->
        <property name="userDao" ref="userDaoImpl"></property>
    </bean>
    <bean id="userDaoImpl" class="com.tinstu.spring.dao.UserDaoImpl"></bean>

3.注入属性-内部bean 和 级联赋值

(1).数据库一对多 关系:部门和员工

一个部门可以有多个部门,一个员工属于一个部门

部门是一,员工是多

(2). 在实体类中,表示一对多的关系.

//部门类
public class Dept {
    private String bname;
    public void setBname(String bname) {
        this.bname = bname;
    }
}

 

//员工类
public class Emp {
    private String ename;
    private  String gender;
    //员工属于某一个部门,使用对象形式表示
    private Dept dept;

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

(3.)在Spring配置文件中进行配置

       <!--内部bean-->
    <bean id="emp" class="com.tinstu.spring.bean.Emp">
        <!--设置两个普通属性-->
        <property name="ename" value="lucy"></property>
        <property name="gender" value="0"></property>
        <!--设置对象类型的属性-->
        <property name="dept">
            <bean id="dept" class="com.tinstu.spring.bean.Dept">
                <property name="bname" value="BaoAnBu"></property>
            </bean>
        </property>
    </bean>

 4.注入属性-级联赋值

接方法3

《1》第一种写法

       <!--级联赋值-->
    <bean id="emp" class="com.tinstu.spring.bean.Emp">
        <!--设置两个普通属性-->
        <property name="ename" value="lucy"></property>
        <property name="gender" value="0"></property>
        <!--级联赋值-->
        <property name="dept" ref="dept"></property>
    </bean>
    <bean id="dept" class="com.tinstu.spring.bean.Dept">
        <property name="bname" value="CaiWuBu"></property>
    </bean>

《2》第二种写法

往员工类中添加dept的get方法

//员工类
public class Emp {
    private String ename;
    private  String gender;
    //员工属于某一个部门,使用对象形式表示
    private Dept dept;
    //dept的get方法
    public Dept getDept() {
        return dept;
    }
    public void setEname(String ename) {
        this.ename = ename;
    }
    public void setGender(String gender) {
        this.gender = gender;
    }
    public void setDept(Dept dept) {
        this.dept = dept;
    }
}

 

       <!--级联赋值-->
    <bean id="emp" class="com.tinstu.spring.bean.Emp">
        <!--设置两个普通属性-->
        <property name="ename" value="lucy"></property>
        <property name="gender" value="0"></property>
        <!--级联赋值-->
        <property name="dept" ref="dept"></property>
        <property name="dept.bname" value="JiShuBu"></property>
    </bean>
    <bean id="dept" class="com.tinstu.spring.bean.Dept">
        <property name="bname" value="CaiWuBu"></property>
    </bean>

 

阅读剩余
THE END