Spring框架学习-IOC 操作-Bean 管理(xml 注入其他类型属性)-3

一、字面量

(1)null 值

<!--2\set方法注入属性-->
    <bean id="book" class="com.rjs.demo.Book1">
        <!--使用property完成属性注入
            name:类里面属性名称
            value:向属性注入的值
        -->
        <property name="bname" value="魔法书"></property>
        <property name="bauthor" value="软件手"></property>
        <property name="address">
            <null></null>
        </property>
    </bean>

测试

public class Book1 {
    // 创建属性
    private String bname;
    private  String bauthor;
    private String address;
    // 创建属性对应的set方法

    public void setBname(String bname) {
        this.bname = bname;
    }

    public void setBauthor(String bauthor) {
        this.bauthor = bauthor;
    }

    public void setAddress(String address) {
        this.address = address;
    }

    public void testDemo(){
        System.out.println(bname + "::" + bauthor + "::" + address);
    }
}
    @Test
    public void testBook(){
        ApplicationContext context = new ClassPathXmlApplicationContext("bean1.xml");
        // 2 获取配置创建的对象
        Book1 book1 = context.getBean("book", Book1.class);
        System.out.println(book1);
        book1.testDemo();
    }

在这里插入图片描述

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

  <!--属性值包含特殊符号 1 把<>进行转义 &lt; &gt; 2 把带特殊符号内容写到CDATA-->
        <property name="address">
            <value><![CDATA[<<南京>>]]></value>
        </property>

在这里插入图片描述

二、注入属性-外部 bean

在这里插入图片描述

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

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

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

service类

package com.rjs.demo.service;

import com.rjs.demo.dao.UserDao;

public class UserService {
    // 创建UserDao类型属性,生成set方法
    private UserDao userDao;

    public void setUserDao(UserDao userDao) {
        this.userDao = userDao;
    }

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

dao类 接口

package com.rjs.demo.dao;

public interface UserDao {
    public void update();
}

dao类 接口实现

package com.rjs.demo.dao;

public class UserDaoImpl implements UserDao{

    @Override
    public void update(){
        System.out.println("dao update..........");
    }
}

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

    <bean id="UserDaoImpl" class="com.rjs.demo.dao.UserDaoImpl"></bean>

三、注入属性-内部 bean

(1)一对多关系:部门和员工
一个部门有多个员工,一个员工属于一个部门,部门是一,员工是多
(2)在实体类之间表示一对多关系,员工表示所属部门,使用对象类型属性进行表示

package com.rjs.demo.bean;

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;
    }

    public void add(){
        System.out.println(ename+ "::" +gender +"::" +dept);
    }
}
package com.rjs.demo.bean;

// 部门类
public class Dept {

    private String dname;

    public void setDname(String dname) {
        this.dname = dname;
    }
}
<?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:p="http://www.springframework.org/schema/p"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">

    <!--1 内部bean    -->
    <bean id="emp" class="com.rjs.demo.bean.Emp">
        <!--        设置两个普通属性-->
        <property name="ename" value="软件手"></property>
        <property name="gender" value=""></property>
        <!--设置对象类型属性-->
        <property name="dept">
            <bean id="depts" class="com.rjs.demo.bean.Dept" >
                <property name="dname" value="安保部"></property>
            </bean>
        </property>
    </bean>
</beans>

测试

@Test
    public void testBean3(){
        ApplicationContext context = new ClassPathXmlApplicationContext("bean3.xml");

        // 2 获取配置创建的对象
        Emp emp = context.getBean("emp", Emp.class);
        // System.out.println(emp);
        emp.add();
    }

在这里插入图片描述

四、注入属性-级联赋值

(1)第一种写法

  <!--1 级联赋值 -->
    <bean id="emp" class="com.rjs.demo.bean.Emp">
        <!--        设置两个普通属性-->
        <property name="ename" value="软件手"></property>
        <property name="gender" value=""></property>
        <!--级联赋值-->
        <property name="dept" ref="dept"></property>
    </bean>

    <bean id="dept" class="com.rjs.demo.bean.Dept">
        <property name="dname" value="财务部"></property>
    </bean>

在这里插入图片描述

(2)第二种写法

这种方法多增加了员工入职部门,如果不设置,就是财务部,设置了就是技术部,且需要get dept方法才能完成

<!--1 级联赋值 -->
    <bean id="emp" class="com.rjs.demo.bean.Emp">
        <!--        设置两个普通属性-->
        <property name="ename" value="软件手"></property>
        <property name="gender" value=""></property>
        <!--级联赋值-->
        <property name="dept" ref="dept"></property>
        <property name="dept.dname" value="技术部"></property>
    </bean>

    <bean id="dept" class="com.rjs.demo.bean.Dept">
        <property name="dname" value="财务部"></property>
    </bean>
package com.rjs.demo.bean;

public class Emp {
    private String ename;
    private String gender;
    // 员工属于某一个部门,使用对象形式表示
    private Dept dept;
    // 生成deot的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;
    }

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

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值