[Conteneur Spring IOC] Assemblage automatique XML



Assemblage automatique

L'assemblage de Bean peut être compris comme une injection de dépendances, et la méthode d'assemblage de Bean est la méthode d'injection de dépendances Bean. Le conteneur Spring prend en charge de nombreuses formes de méthodes d'assemblage Bean, telles que: l'assemblage basé sur xml, l'assemblage basé sur les annotations et l'assemblage automatique, etc. (Le plus couramment utilisé est l'assemblage basé sur les annotations.)

Aujourd'hui, j'arrive principalement à comprendre 自动装配le chemin!

① Concept

L'assemblage automatique est根据指定装配规则(属性名称或者属性类型),Spring 自动将匹配的属性值进行注入。


② Type d'assemblage automatique

Réaliser l'assemblage automatique

  • bean 标签Propriétés autowire, configurer l'assemblage automatique
    • Il existe deux valeurs couramment utilisées pour l'attribut autowire:
      • byName 根据属性名称注入, La valeur id du bean valeur injectée est la même que le nom d'attribut de classe
      • byType 根据属性类型注入

Ⅰ.byName est injecté en fonction du nom de l'attribut

▶ Classe de service

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

▶ Classe 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);
    }
}

▶ Fichier de configuration 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>

La valeur id du bean valeur injectée est la même que le nom de l'attribut de classe
Insérez la description de l'image ici


▶ Classe de test

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();
        }
    }
}

Insérez la description de l'image ici

Retour au sommet


Ⅱ.byType est injecté en fonction du type d'attribut

  • Modifiez simplement la valeur de l'attribut autowire en byType

▶ Fichier de configuration 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>
☠ Remarque

Lors de l'injection automatique via le type d'attribut, plusieurs balises bean du même type ne peuvent pas exister en même temps, sinon Spring ne saura pas laquelle utiliser et une erreur sera signalée . Pour le moment, il ne peut être injecté que sous la forme de byName ~
Insérez la description de l'image ici

Retour au sommet


Je suppose que tu aimes

Origine blog.csdn.net/qq_45797116/article/details/113571596
conseillé
Classement