Assemblage automatique Spring-Bean

1.1 Répertoire de projets

1.2 Concept d'assemblage automatique

  • Le câblage automatique est un moyen d'utiliser le ressort pour satisfaire les dépendances des haricots.
  • Spring recherchera des beans dépendants pour un bean dans le contexte de l'application.

Il existe trois mécanismes d'assemblage pour les beans au printemps, à savoir:

  1. Configuration explicite en xml;
  2. Configuration explicite en java;
  3. Mécanisme de découverte de bean implicite et assemblage automatique.

L'assemblage automatique de Spring doit être implémenté à partir de deux perspectives, ou de deux opérations:

  1. Analyse des composants: Spring découvrira automatiquement les beans créés dans le contexte de l'application.
  2. Autowiring: Spring satisfait automatiquement les dépendances entre les beans, ce que nous appelons IoC / DI.

Remarque : La combinaison de la numérisation des composants et de l'assemblage automatique exerce une grande puissance, de sorte que la configuration d'affichage est réduite au minimum.

1.3 Exemple de code

Créez deux nouvelles classes d'entités, Student Teacher a une méthode de fonction .

package cn.guardwhy.domain;

public class Student {
    
    
    public void function(){
    
    
        System.out.println("学生学习!!!");
    }
}
package cn.guardwhy.domain;

public class Teacher {
    
    
    public void function(){
    
    
        System.out.println("老师教导学生学习!!");
    }
}

Créer un nouvel utilisateur de classe d'utilisateurs

package cn.guardwhy.domain;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@NoArgsConstructor
@AllArgsConstructor
public class User {
    
    
    private Student student;
    private Teacher teacher;
    private String str;
}

Ecrire le fichier de configuration Spring

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans.xsd">

    <bean id="student" class="cn.guardwhy.domain.Student"/>
    <bean id="teacher" class="cn.guardwhy.domain.Teacher"/>

    <bean id="user" class="cn.guardwhy.domain.User">
        <property name="student" ref="student"/>
        <property name="teacher" ref="teacher"/>
        <property name="str" value="guardwhy"/>
    </bean>
</beans>

Code de test

package cn.guardwhy.Test;

import cn.guardwhy.domain.User;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class MyTest {
    
    
    @Test
    public void testMethodAutowire(){
    
    
        ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");
        User user = (User) context.getBean("user");
        user.getTeacher().function();
        user.getStudent().function();
    }
}

1.4 byName

autowire byName (autowire by name)
Dans le processus de configuration manuelle de XML, des erreurs telles que des lettres manquantes et des majuscules se produisent souvent et ne peuvent pas être vérifiées, ce qui réduit l'efficacité du développement.
L'utilisation de l'assemblage automatique évitera ces erreurs et simplifiera la configuration.

Code de test

Modifiez la configuration du bean et ajoutez un attribut autowire = "byName"

<!--byName:会自动在容器上下文中查找,和自己对象set方法后面的值对应的beanid-->
<bean id="user" class="cn.guardwhy.domain.User" autowire="byName">
     <property name="student" ref="student"/>
</bean>

Pour résumer

Lorsqu'un nœud de bean a l'attribut autowire byName.

  1. Il trouvera tous les noms de méthode d'ensemble dans sa classe, tels que setStudent, et obtiendra la chaîne avec l'ensemble supprimé et la première lettre minuscule, c'est-à-dire étudiant.
  2. Accédez au conteneur de ressorts pour trouver s'il existe un objet avec ce nom de chaîne id.
  3. Si tel est le cas, supprimez l'injection; sinon, signalez une exception de pointeur nul.

1,5 parType

autowire byType (assemblage automatique par type)

Code de test

L'utilisation de l'autowire byType doit d'abord garantir que les objets du même type sont uniques dans le conteneur à ressort. S'il n'est pas unique, une exception non unique sera signalée.

<!--byType:会自动在容器上下文中查找,和自己对象属性类型相同的bean!!-->
<bean id="user" class="cn.guardwhy.domain.User" autowire="byType">
     <property name="student" ref="student"/>
</bean>

1.6 Résumé

  • Lorsque byname, il est nécessaire de s'assurer que l'id de tous les beans est unique, et le bean doit être cohérent avec la valeur de la méthode set de la propriété automatiquement injectée.
  • En cas de bytype, il est nécessaire de s'assurer que la classe de tous les beans est unique et que le bean doit être cohérent avec le type des propriétés injectées automatiquement.

Je suppose que tu aimes

Origine blog.csdn.net/hxy1625309592/article/details/115026852
conseillé
Classement