Spring5框架2020最新版教程(五)IOC操作Bean管理基于XML配置注入其他类型属性(注入外部/内部Bean)

IOC操作Bean管理基于XML配置注入其他类型属性

1、字面量

(1)、null值

 <!--注入空值-->
    <bean id="book" class="com.lds.springdemo.entity.Book">
        <property name="address">
            <null/>
        </property>
    </bean>

(2)、属性值包含特殊符号

  <!--属性值包含特殊符号
    1、把带特殊符号内容写到CDATA
    2、把<>进行转义 &lt; &gt;
    -->
    <bean id="book" class="com.lds.springdemo.entity.Book">
        <property name="address">
            <value>
                <![CDATA[<<南京>>]]]>
            </value>
        </property>
    </bean>
  <bean id="book" class="com.lds.springdemo.entity.Book">
        <property name="address" value="&lt;南京&gt;">
        </property>
    </bean>

2、注入属性—外部bean

(1)创建两个类service类和dao类
(2)在service调用dao里面的方法
(3)在Spring配置文件中进行配置

  • 创建BookService 类
public class BookService {

    //创建BookDao类型属性,生成set方法

    private BookDao bookDao;

    public void setBookDao(BookDao bookDao) {
        this.bookDao = bookDao;
    }

    public void add(){
       System.out.println("service add......");
   }

}
  • 创建BookDao 接口
public interface BookDao {

    void update();

}
  • 创建BookDao 接口实现类BookDaoImpl
   public class BookDaoImpl implements BookDao {

        public void update() {
            System.out.println("dao update");
        }
    }
  • xml配置
<!--创建service和dao对象-->
    <bean id="bookService" class="com.lds.springdemo.service.BookService">
        <!--注入bookDao对象
        name属性值:类里面属性名称
        ref属性:创建bookDao对象bean标签id值-->
        <property name="bookDao" ref="bookDaoImpl"></property>
    </bean>

    <bean id="bookDaoImpl" class="com.lds.springdemo.dao.daoimpl.BookDaoImpl"></bean>

3、注入属性—内部bean和级联赋值

(1)一对多关系:部门和员工
一个部门有多个员工,一个员工属于一个部门
部门是一,员工是多

(2)在实体类之间表示一对多的关系,员工表示所属部门,使用对象类型
属性进行表示。

  • 创建部门类
/**
 * @Description:部门类
 * @Author: lds
 * @Date: 2020/12/11
 */
public class Department {
    /**
     * 部门名称
     */
    private String name;

    public void setName(String name) {
        this.name = name;
    }
}
  • 创建员工类
/**
 * @Description: 员工类
 * @Author: lds
 * @Date: 2020/12/11
 */
public class Employee {
    /**
     * 员工名字
     */
    private String name;
    /**
     * 员工性别
     */
    private String gender;
    /**
     * 员工属于某一个部门,使用对象形式表示
     */
    private Department dept;

    public void setName(String name) {
        this.name = name;
    }

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

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

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

<!--内部bean-->
    <bean id="employee" class="com.lds.springdemo.bean.Employee">
        <!--先设置两个普通的属性-->
        <property name="name" value="lds"></property>
        <property name="gender" value=""></property>
        <!--设置对象类型属性-->
        <property name="department">
            <bean id="department" class="com.lds.springdemo.bean.Department">
                <property name="name" value="保安部门"></property>
            </bean>
        </property>
    </bean>

(4)注入属性—级联赋值

  • 第一种写法:
<bean id="employee" class="com.lds.springdemo.bean.Employee">
        <!--先设置两个普通的属性-->
        <property name="name" value="lds"></property>
        <property name="gender" value=""></property>
        <!--级联赋值-->
        <property name="department" ref="department"></property>
    </bean>
    <bean id="department" class="com.lds.springdemo.bean.Department">
        <property name="name" value="财务部门"></property>
    </bean>
  • 第二种写法
    生成department的get方法
 public Department getDepartment() {
        return department;
    }
  • 配置xml
 <!--内部bean-->
    <bean id="employee" class="com.lds.springdemo.bean.Employee">
        <!--先设置两个普通的属性-->
        <property name="name" value="lds"></property>
        <property name="gender" value=""></property>
        <!--级联赋值-->
        <property name="department" ref="department"></property>
        <property name="department.name" value="技术部门"></property>

    </bean>
    <bean id="department" class="com.lds.springdemo.bean.Department"></bean>
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我的名字是雪冬

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值