栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

一步一个脚印学习Spring框架(二)内部bean注入与级联赋值

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

一步一个脚印学习Spring框架(二)内部bean注入与级联赋值

距离上一次更新Spring框架已经过去一个多月了,不是因为不想写,课设太多了,没有时间学习Spring,今天来更新一下Spring的内部bean注入和级联赋值

内部bean注入

内部bean有点类似Java的内部类,话不多说,通过例子来讲解。假设有两个类,一个是Dept类(部门类),有属性dname(String类型),一个是Emp类(员工类),有属性String ename、String gender,Dept dept(一个员工属于一个部门),Emp有方法showInfo(),打印员工的姓名、性别以及部门。并为这两个类的属性设置getter和setter方法。

Dept类

public class Dept {


    public String dname;

    public String getDname() {
        return dname;
    }

    public void setDname(String dname) {
        this.dname = dname;
    }

    @Override
    public String toString() {
        return "Dept{" +
                "dname='" + dname + ''' +
                '}';
    }
}

Emp类

public class Emp {

    public String ename;
    public String gender;
    public Dept dept;

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

    public Dept getDept() {
        return dept;
    }

    public String getEname() {
        return ename;
    }

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

    public String getGender() {
        return gender;
    }

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

    public void showInfo(){
        System.out.println("ename ==> "+ename+",gender ==> "+gender+",dept ==> "+dept);
    }
}

创建完成这两个类之后,在src目录下创建Spring config文件,具体在New->XML Configuration file->Spring Config,这里我将这个文件命名为bean1.xml
配置文件创建完成之后就是需要在xml文件中进行配置,具体配置如下



    
    
        
        
        
        
            
                
            
        
    

可以看到,当属性不是基本数据类型,而是一个类时,在原有的bean标签中使用property标签,并给该标签的name属性赋值(一般为对象名,也可以不是),并在该property嵌套一个bean标签,该标签的id属性的值要与property的name标签的name属性值相同,我这里都是dept,之后在嵌套的bean标签中使用propperty标签来注入dept的dname属性。

下面编写测试代码

    @Test
    public void Test1(){
        ApplicationContext context = new ClassPathXmlApplicationContext("bean1.xml");
        Emp emp = context.getBean("emp", Emp.class);
        emp.showInfo();
    }

运行结果

级联赋值

其实刚刚的内部bean注入它本身也是属于级联赋值,级联赋值是向有关联的类中注入他的属性的值,比如和Emp类有关联的Dept类,那就是向Dept类中注入属性值,级联赋值有两种方式,具体看下面例子。

方式一


    
    
        
        
        
    
    
        
    

在Emp类的bean标签中使用标签property,name属性同样设置为对象名,此时不再使用value上古星赋值,而是使用ref属性,同时需要在使用外部类注入的方法将Dept注入,此时将ref属性的值指向Dept类bean标签的id属性的值,即这两个属性值要相同。

下面同样编写测试代码,其实只要把上述bean1.xml,换成新的文件名就行

    @Test
    public void Test1(){
        ApplicationContext context = new ClassPathXmlApplicationContext("bean2.xml");
        Emp emp = context.getBean("emp", Emp.class);
        emp.showInfo();
    }

运行结果(两次结果其实一样)

方式二


    
    
        
        
        
        
    
    
    	
         
    

在Emp类的bean标签中使用property标签 name属性为对象名,使用ref标签,同样需要使用外部bean注入初始化Dept类,注意此时可以注入Dept的属性值,也可以不注入,将property的ref标签指向 Dept的bean标签的id属性后,在Emp中再次添加一个property标签,name属性值为dept.dname,也就是dept对象的dname属性,value属性给dname属性赋值 此时在Emp类中必须有Dept的getter和setter方法,不然会报错。要是Dept类不止一个属性就接着在后面继续添加property标签。

测试类也只是该xml文件名,这里就不写了,直接上运行结果

到这里内部bean和级联赋值就讲完了,我也是刚学完就直接写博客了,肯定有许多不足的地方请大家指正!

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/328288.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号