[Контейнер Spring IOC] Автоматическая сборка XML



Автоматическая сборка

Сборку Bean можно понимать как внедрение зависимостей, а способ сборки Bean - это способ внедрения зависимостей Bean. Контейнер Spring поддерживает множество форм методов сборки Bean, таких как сборка на основе xml, сборка на основе аннотаций и автоматическая сборка и т. Д. (Наиболее часто используется сборка на основе аннотаций).

Сегодня я в основном пришел к пониманию 自动装配пути!

① Концепция

Автоматическая сборка есть根据指定装配规则(属性名称或者属性类型),Spring 自动将匹配的属性值进行注入。


② Тип автоматической сборки

Осуществить автоматическую сборку

  • bean 标签Свойства autowire, настроить автоматическую сборку
    • Для атрибута autowire обычно используются два значения:
      • byName 根据属性名称注入, Значение id внедренного bean-компонента значения совпадает с именем атрибута класса.
      • byType 根据属性类型注入

Ⅰ.byName вводится в соответствии с именем атрибута

▶ Класс кафедры

public class Dept {
    
    
    // 部门名称
    private String dName;
    // toString()
    @Override
    public String toString() {
    
    
        return "Dept{" +
                "dName='" + dName + '\'' +
                '}';
    }
}

▶ Класс Emp

public class Emp {
    
    
    // 声明属性
    private Dept dept;
    // set()
    public void setDept(Dept dept){
    
    
        this.dept = dept;
    }
    // toString()
    @Override
    public String toString() {
    
    
        return "Emp{" +
                "dept=" + dept +
                '}';
    }
    // test()
    public void test(){
    
    
        System.out.println(dept);
    }
}

▶ Файл конфигурации 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" xmlns:util="http://www.springframework.org/schema/util"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/util https://www.springframework.org/schema/util/spring-util.xsd">

    <!--  配置创建对象  -->
    <!--实现自动装配
         bean 标签属性 autowire,配置自动装配
            autowire 属性常用两个值:
               byName 根据属性名称注入 ,注入值 bean 的 id 值和类属性名称一样
               byType 根据属性类型注入
      -->
    <bean id="emp" class="自动装配.Emp" autowire="byName">
        <!--           手动注入          -->
        <!--<property name="dept" ref="dept"></property>-->
    </bean>
    <bean  id="dept" class="自动装配.Dept"></bean>
</beans>

Значение id внедренного bean-компонента значения совпадает с именем атрибута класса.
Вставьте описание изображения сюда


▶ Тестовый класс

public class Test {
    
    
    @org.junit.Test
    public void test_Emp(){
    
    
        try {
    
    
            ApplicationContext context = new ClassPathXmlApplicationContext("自动装配/bean_Emp.xml");
            Emp emp = context.getBean("emp",Emp.class);
            System.out.println(emp);
            emp.test();
        } catch (Exception e){
    
    
            e.printStackTrace();
        }
    }
}

Вставьте описание изображения сюда

Вернуться наверх


Ⅱ.byType вводится в соответствии с типом атрибута

  • Просто измените значение атрибута autowire на byType

▶ Файл конфигурации 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" xmlns:util="http://www.springframework.org/schema/util"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/util https://www.springframework.org/schema/util/spring-util.xsd">

    <!--  配置创建对象  -->
    <!--实现自动装配
         bean 标签属性 autowire,配置自动装配
            autowire 属性常用两个值:
               byName 根据属性名称注入 ,注入值 bean 的 id 值和类属性名称一样
               byType 根据属性类型注入
      -->
    <bean id="emp" class="自动装配.Emp" autowire="byType">
        <!--           手动注入          -->
        <!--<property name="dept" ref="dept"></property>-->
    </bean>
    <bean  id="dept" class="自动装配.Dept"></bean>
</beans>
☠ Примечание

При автоматическом внедрении через тип атрибута несколько тегов bean одного типа не могут существовать одновременно, иначе Spring не узнает, какой из них использовать, и будет сообщено об ошибке . В настоящее время его можно вводить только в форме byName ~
Вставьте описание изображения сюда

Вернуться наверх


рекомендация

отblog.csdn.net/qq_45797116/article/details/113571596
рекомендация