Injection XML au printemps

Injection XML au printemps

1. introduction

Dans ce didacticiel de base, nous allons apprendre à effectuer une configuration simple de bean basée sur XML avec Spring Framework.

2. Vue d'ensemble

Commençons par ajouter la dépendance de bibliothèque de Spring dans lespom.xml:


    org.springframework
    spring-context
    5.1.4.RELEASE

La dernière version de la dépendance Spring peut être trouvéehere.

3. Injection de dépendances - Un aperçu

Dependency injection est une technique par laquelle les dépendances d'un objet sont fournies par des conteneurs externes.

Supposons que nous ayons une classe d'application qui dépend d'un service qui gère réellement la logique métier:

public class IndexApp {
    private IService service;
    // standard constructors/getters/setters
}

Disons maintenant queIService est une interface:

public interface IService {
    public String serve();
}

Cette interface peut avoir plusieurs implémentations.

Jetons un coup d'œil à une mise en œuvre potentielle:

public class IndexService implements IService {
    @Override
    public String serve() {
        return "Hello World";
    }
}

Ici,IndexApp est un composant de haut niveau qui dépend du composant de bas niveau appeléIService.

Essentiellement, nous découplonsIndexApp d'une implémentation particulière desIService qui peuvent varier en fonction des divers facteurs.

4. Injection de dépendances - En action

Voyons comment nous pouvons injecter une dépendance.

4.1. Utilisation des propriétés

Voyons comment nous pouvons relier les dépendances ensemble à l'aide d'une configuration XML:




    

Comme on peut le voir, nous créons une instance deIndexService et lui attribuons un identifiant. Par défaut, le haricot est un singleton. Nous créons également une instance deIndexApp.

Dans ce bean, nous injectons l’autre bean en utilisant la méthode setter.

4.2. Utilisation du constructeur

Au lieu d'injecter un bean via la méthode setter, nous pouvons injecter la dépendance à l'aide du constructeur:


    

4.3. Utilisation de Static Factory

Nous pouvons également injecter un haricot retourné par une usine. Créons une usine simple qui renvoie une instance deIService en fonction du nombre fourni:

public class StaticServiceFactory {
    public static IService getNumber(int number) {
        // ...
    }
}

Voyons maintenant comment nous pourrions utiliser l'implémentation ci-dessus pour injecter un bean dansIndexApp en utilisant une configuration XML:


    



    

Dans l'exemple ci-dessus, nous appelons la méthode statiquegetService en utilisantfactory-method pour créer un bean avec l'idmessageService que nous injectons dansIndexApp.

4.4. Utilisation de la méthode d'usine

Prenons une fabrique d'instances qui renvoie une instance deIService en fonction du nombre fourni. Cette fois, la méthode n'est pas statique:

public class InstanceServiceFactory {
    public IService getNumber(int number) {
        // ...
    }
}

Voyons maintenant comment nous pourrions utiliser l'implémentation ci-dessus pour injecter un bean dansIndexApp en utilisant la configuration XML:



    


    

Dans l'exemple ci-dessus, nous appelons la méthodegetService sur une instance deInstanceServiceFactory en utilisantfactory-method pour créer un bean avec l'idmessageService que nous injectons dansIndexApp.

5. Essai

Voici comment nous pouvons accéder aux beans configurés:

@Test
public void whenGetBeans_returnsBean() {
    ApplicationContext applicationContext = new ClassPathXmlApplicationContext("...");
    IndexApp indexApp = applicationContext.getBean("indexApp", IndexApp.class);
    assertNotNull(indexApp);
}

6. Conclusion

Dans ce rapide tutoriel, nous avons illustré des exemples d'injections de dépendance à l'aide de la configuration XML à l'aide de Spring Framework.

L'implémentation de ces exemples peut être trouvée dansthe GitHub project - c'est un projet basé sur Maven, il devrait donc être facile à importer et à exécuter tel quel.