zl程序教程

您现在的位置是:首页 >  Java

当前栏目

Spring基础(六):Bean自动装配

2023-02-18 16:40:56 时间

​Bean自动装配

通过property标签可以手动指定给属性进行注入

我们也可以通过自动转配,完成属性的自动注入,就是自动装配,可以简化DI的配置

一、准备实体类

package com.lanson.bean;
/**
 * @Author: lansonli
 * @Description: MircoMessage:Mark_7001
 */
public class Dept {
}

package com.lanson.bean;
/**
 * @Author: lansonli
 * @Description: MircoMessage:Mark_7001
 */
public class Emp {
    private Dept dept;
    @Override
    public String toString() {
        return "Emp{" +
                "dept=" + dept +
                '}';
    }
    public Dept getDept() {
        return dept;
    }
    public void setDept(Dept dept) {
        this.dept = dept;
    }
    public Emp() {
    }
    public Emp(Dept dept) {
        this.dept = dept;
    }
}

二、配置文件

<?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"
       xmlns:c="http://www.springframework.org/schema/c"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans.xsd">
    <bean id="dept" class="com.lanson.bean.Dept"></bean>
    <!--
    autowire 属性控制自动将容器中的对象注入到当前对象的属性上
    byName 根据目标id值和属性值注入,要保证当前对象的属性值和目标对象的id值一致
    byType 根据类型注入,要保证相同类型的目标对象在容器中只有一个实例
    -->
    <bean id="emp" class="com.lanson.bean.Emp" autowire="byName"></bean>
</beans>

三、测试代码

package com.lanson.test;
import com.lanson.bean.Emp;
import com.lanson.bean.User;
import org.junit.Test;
import org.springframework.context.support.ClassPathXmlApplicationContext;
/**
 * @Author: lansonli
 * @Description: MircoMessage:Mark_7001
 */
public class Test2 {
    @Test
    public void testGetBean(){
        ClassPathXmlApplicationContext context =new ClassPathXmlApplicationContext("applicationContext2.xml");
        Emp emp = context.getBean("emp", Emp.class);
        System.out.println(emp);
    }
}