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.