Assemblage automatique de Bean

Préface


Aujourd'hui, nous allons résumer le problème de l'assemblage des haricots. Un logiciel doit établir une coopération entre des classes avec différentes fonctions afin d'être assemblé en un système puissant. Spring est un ordonnanceur. Le résumé est: Je sais que vous avez besoin Quoi, je vous fournit ce dont vous avez besoin, et vous avez seulement besoin que votre cerveau soit vide, concentrez-vous sur la logique métier que vous voulez compléter et laissez-moi le reste.

Vous avez été ému par Spring? Par exemple, un ordinateur contient de nombreux composants. Cup sait-il qu'il a besoin d'un disque dur? Je ne sais pas, cela nécessite un ouvrier pour l'assembler. Vous obtenez une machine avec tous les accessoires, et le ressort est l'assembleur

Assemblée


L'acte de créer une relation de coopération entre les objets d'application est généralement appelé câblage, qui est également l'essence de DI (injection de dépendances)

Trois méthodes de configuration:

  1. Afficher la configuration en XML
  2. Afficher la configuration dans JAVA
  3. Mécanisme de découverte implicite de bean et assemblage automatique

Assemblage automatisé des grains

  • Analyse des composants: Spring découvrira automatiquement les beans créés dans le contexte de l'application
  • Câblage automatique: Spring rencontre automatiquement les dépendances entre les beans
Exemple: (tiré du "combat réel du printemps")


Ce petit exemple est basé sur un lecteur de CD. Si le lecteur de CD n'ajoute pas d'enregistrement, alors il est inutile, donc la dépendance ici est que le lecteur de CD dépend de l'enregistrement à lire.

1. Créez un enregistrement

public interface CompactDisc {
    void play();
}

Une philosophie de codage qui mérite réflexion: Définir un disque comme interface, définir les opérations qu'un lecteur de CD peut effectuer sur un disque, réduire au minimum le couplage entre la réalisation arbitraire du lecteur de CD et le CD lui-même.

Deuxièmement, la réalisation du disque

@Component
public class SgtPeppers implements CompactDisc {
    
    

    //beatles1967年发行的专辑
    private String title="Sgt.Perpper's Lonely Hearts Club Band";
    private String artist="The Beatles";

    public void play() {
        System.out.println("Playing "+title+" by "+artist);
    }

}

La différence entre ps @Component, @Repository, @Service et @Controller

  • @Service est utilisé pour annoter les composants de la couche de gestion
  • @Controller est utilisé pour annoter les composants de la couche de contrôle (comme l'action dans les entretoises)
  • @Repository est utilisé pour annoter les composants d'accès aux données, à savoir les composants DAO
  • @Component fait référence aux composants en général. Lorsque les composants ne sont pas bien classés, nous pouvons utiliser cette annotation pour l'annotation.

Ce sont toutes des méta-annotations, utilisées pour annoter d'autres annotations, et leur rôle ici: Annotée sur une certaine classe, la classe sera automatiquement enregistrée en tant que BeanDefinition par le conteneur Spring (lors de l'analyse du paquet, s'il y a les quatre annotations ci-dessus, alors Gérez cette classe dans le conteneur à ressort)

Trois, configurer le ressort

L'analyse des composants n'est pas lancée par défaut. Vous devez afficher et configurer Spring. Il existe deux méthodes de configuration. La première consiste à utiliser du code Java pour définir les règles d'assemblage Spring et la seconde à utiliser des fichiers de configuration xml.

première méthode:

@Configuration
@ComponentScan
public class CDPlayerConfig {
    
    
}

Annoté avec @Configuration, indiquant que cette classe est une classe de configuration, et @ComponentScan analysera les packages avec la même classe de configuration par défaut

méthode d'essai:

//在测试开始的时候自动创建Spring的应用上下文
@RunWith(SpringJUnit4ClassRunner.class)
//会告诉他需要在CDPlayerConfig中加载配置。因为CDPlayerConfig包含了@ComponentScan,最终的应用上下文中应该包含CompactDisc bean
@ContextConfiguration(classes=CDPlayerConfig.class)
public class CDPlayerTest {
    
    
    @Autowired
    private CompactDisc cd;

    @Test
    public void cdShouldNotBeNull(){
        assertNotNull(cd);
    }

}

Méthode 2:
configurer l'analyseur de packages dans le fichier xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:context="http://www.springframework.org/schema/context" 
    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-4.2.xsd
    http://www.springframework.org/schema/context 
    http://www.springframework.org/schema/context/spring-context-4.2.xsd">
    <!-- 配置包扫描器 -->
    <context:component-scan base-package="soundsystem"/>
</beans>

méthode d'essai:

第二种测试方法:(配置文件)

public class CDPlayerTest {
    
    
    @Autowired
    private CompactDisc cd;

    @Test
    public void cdShouldNotBeNull(){
        ClassPathXmlApplicationContext context=new ClassPathXmlApplicationContext("classpath:spring/applicationContext-*.xml");
        context.start();
        cd=(CompactDisc) context.getBean("lonelyHeartsClub");
        assertNotNull(cd);
    }

}
Pour résumer


Aujourd'hui, j'ai brièvement appris quelques-unes des applications les plus élémentaires de l'assemblage de ressorts. Ceci n'est que l'exemple le plus simple. Lorsque l'entreprise est complexe, divers autres scénarios apparaissent et la puissance du ressort se manifeste lentement.

Je suppose que tu aimes

Origine blog.csdn.net/cd18333612683/article/details/79021642
conseillé
Classement