java spring IOC xml 方式 内部Bean注入

上次说了外部 Bean注入
这次来演示一个内部的 Bean注入

我们先创建一个spring 项目 导入最基本的 spring 包
在项目src目录下创建一个包 cascade

cascade包下创建两个类

Dept 部门类 参考代码如下

package cascade;

//部门类
public class Dept {
    
    
    private String dname;

    public void setDname(String dname) {
    
    
        this.dname = dname;
    }
    public String toString() {
    
    
        return "'dname=’"+dname;
    }
}

部门类代码比较简单 就是 定义了一个 dname 部门名称
然后定义了 dname 的 set方法
重写了一下 toString 类方法 返回了一个部门名称 等于部门名称值的字符串 方便最后测试 看数据对不对

Emp 员工类
参考代码如下

package cascade;

//员工类
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);
    }
}

这里 员工类 定义了 ename 员工名 gender 员工性别 dept所属部门的对象 然后对应 都给他们定义了自己的set方法
还写了一个 add 方法 用于测试到最后数据能否正常输出

然后 在src下创建 bean.xml
参考代码如下

<?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 = "emp" class = "cascade.Emp">
        <property name = "ename" value="keling"></property>
        <property name="gender" value=""></property>
        <property name='dept'>
            <bean id = "dept" class="cascade.Dept">
                <property name="dname" value="开发部"></property>
            </bean>
        </property>
    </bean>
</beans>

可以看到 我们先用 bean标签 声明了 Emp员工类的实体 然后 在里面 通过dept属性赋值 再给一个bean实体
就是我们的Dept 部门类 部门类 是作为一个变量 存储在 员工类里面的 这就是内部Bean注入

然后在src下创建text测试类 参考代码如下

import cascade.Emp;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class text {
    
    
    public static void main(String args[]) {
    
    
        //获取配置文件
        ApplicationContext context = new ClassPathXmlApplicationContext("bean.xml");
        Emp emp = context.getBean("emp", Emp.class);
        emp.add();
    }
}

读取xml配置文件内容 然后反射对象 通过对象调用员工类的add

运行结果如下
在这里插入图片描述
也是没有任何问题 这就是种内部 Bean注入 也算是一种级联赋值

猜你喜欢

转载自blog.csdn.net/weixin_45966674/article/details/128754449