[JAVA] À propos de DI of Spring ①
Objectif de cet article
DI: Qu'est-ce que l'injection de dépendances?
A continué
Explication de la façon dont Spring réalise DI
Portée de cet article
Explication générale de l'ID au printemps
Revue DI
- Raison d'utiliser DI ... Je souhaite réduire la dépendance entre les classes et améliorer la réutilisabilité / la testabilité.
--Comment réaliser ... Passez la classe que vous souhaitez utiliser dans une certaine classe avec le type d'interface → Définissez la classe à transmettre séparément.
Personnage
--Bean ... Classe d'injection
--Bean definition ... Différentes propriétés définies dans le bean lors de l'injection du bean
--Fichier de définition de bean / Configuration… Une collection de définitions de bean (classe Java, fichier XML)
- Conteneur DI ... Définissez divers beans et passez-les à l'autre partie lors de leur utilisation.
Aperçu de la réalisation de DI au printemps
La prochaine fois, les mouvements détaillés de chaque classe
ApplicationContext
- ** Le personnage central dans la réalisation de DI en Java **
--Une classe qui a la fonction d'un conteneur DI
--Une classe créée en étendant la classe BeanFactory
--Il existe une classe qui est encore étendue par la configuration correspondante, etc.
- Plusieurs conteneurs DI peuvent être créés pour une application
Configuration
- L'équivalent du fichier de définition Bean
- Passez ceci à la classe ApplicationContext et générez un bean dans le conteneur DI
-Il existe trois méthodes: [basé sur Java], [basé sur xml] et [basé sur l'annotation].
――Three peut être utilisé seul, mais le réglage devient plus facile en utilisant une base d'annotations et d'autres en combinaison.
- Écrivez la définition du bean dans ce
Bean
- Classe générale, aucune description particulière n'est requise
Si --est une configuration basée sur des annotations, écrivez une annotation séparément.
- Les haricots peuvent également être injectés et imbriqués dans le haricot
ex) Décrivez la condition d'initialisation du bean de HogeService dans hogeConfig et récupérez le bean via ApplicationContext (basé sur Java)
CreateContext.java
ApplicationContext ctx = new AnnotationConfigApplicationContext(HogeConfig.class);
HogeService service = ctx.getBean(HogeService.class)
HogeConfig.java
@Configuration
public class HogeConfig {
@Bean
HogeService hogeService() {
return new HogeService();
}
}
Est-ce comme ce qui suit dans un diagramme conceptuel?
Je pense que c'est relativement facile à comprendre si vous avalez le concept.
Aperçu de la prochaine fois
Nous prévoyons d'expliquer les spécifications en l'essayant.