Spring-IOC-依赖注入-基于XML方式-外部bean、内部bean、级联赋值

Spring系列文章目录


Spring系列文章目录

前言

一、外部bean、内部bean是什么?

二、使用步骤

1.创建部门类

2.创建员工类

3.外部bean属性注入

4、内部bean属性注入

5、级联赋值

总结



前言

Spring-IOC-依赖注入-基于XML方式-外部bean、内部bean、级联赋值


提示:以下是以公司的部门、员工为例

一、外部bean、内部bean是什么?

外部bean:直接在beans标签内部直接定义的bean对象,外部bean可以被多个bean对象引用

内部bean:在某个bean标签的内部定义的bean对象,内部bean只能被某个对象的某个属性引用。

二、使用步骤

1.创建部门类

package com.orz.spring.bean;
/**
 * @author orz
 * @create 2020-10-18 15:08
 */
public class Department {
    private Integer id;
    private String deptName;

    public Department() {
    }

    public Department(Integer id, String deptName) {
        this.id = id;
        this.deptName = deptName;
    }

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getDeptName() {
        return deptName;
    }

    public void setDeptName(String deptName) {
        this.deptName = deptName;
    }

    @Override
    public String toString() {
        return "Department{" +
                "id=" + id +
                ", deptName='" + deptName + '\'' +
                '}';
    }
}

2.创建员工类

package com.orz.spring.bean;
/**
 * @author orz
 * @create 2020-10-18 15:07
 */
public class Employee {
    private String name;
    private String gender;
    private Department dept;

    public Employee() {
    }

    public String getName() {
        return name;
    }

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

    public String getGender() {
        return gender;
    }

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

    public Department getDept() {
        return dept;
    }

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

    @Override
    public String toString() {
        return "Employee{" +
                "name='" + name + '\'' +
                ", gender='" + gender + '\'' +
                ", dept=" + dept +
                '}';
    }
}

3.外部bean属性注入

    <bean id="employee3" class="com.orz.spring.bean.Employee">
        <property name="name" value="梅梅"/>
        <property name="gender" value="女"/>
        <property name="dept" ref="department2"/>
    </bean>
    <bean id="department2" class="com.orz.spring.bean.Department">
        <property name="id" value="3"/>
        <property name="deptName" value="行政部"/>
    </bean>
@Test
    public void test3()
    {
        ApplicationContext applicationContext=new ClassPathXmlApplicationContext("bean.xml");
        Employee employee = applicationContext.getBean("employee3", Employee.class);
        System.out.println(employee);
    }

 

Employee{name='梅梅', gender='女', dept=Department{id=3, deptName='行政部'}}

4、内部bean属性注入

    <bean id="employee2" class="com.orz.spring.bean.Employee">
        <property name="name" value="刘大爷"/>
        <property name="gender" value="男"/>
        <property name="dept">
            <bean class="com.orz.spring.bean.Department">
                <property name="id" value="2"/>
                <property name="deptName" value="安全部"/>
            </bean>
        </property>
    </bean>
@Test
    public void test2()
    {
        ApplicationContext applicationContext=new ClassPathXmlApplicationContext("bean.xml");
        Employee employee = applicationContext.getBean("employee2", Employee.class);
        System.out.println(employee);
    }
Employee{name='刘大爷', gender='男', dept=Department{id=2, deptName='安全部'}}

5、级联赋值

    <bean id="employee" class="com.orz.spring.bean.Employee">
        <property name="name" value="李华"/>
        <property name="gender" value="男"/>
        <property name="dept" ref="department"/>
            <property name="dept.id" value="1"/>
            <property name="dept.deptName" value="技术部"/>
    </bean>
    <bean id="department" class="com.orz.spring.bean.Department"/>
@Test
    public void test1()
    {
        ApplicationContext applicationContext=new ClassPathXmlApplicationContext("bean.xml");
        Employee employee = applicationContext.getBean("employee", Employee.class);
        System.out.println(employee);
    }
Employee{name='李华', gender='男', dept=Department{id=1, deptName='技术部'}}

总结

内部bean不需要写id 不能给外部访问,级联赋值需要开启getter方法

建议每个类都配上getter、setter方法

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值