Maison >Java >javaDidacticiel >printemps: logique-exécution-ordre et code-flux
Ce diagramme illustre le flux d'exécution étape par étape et le cycle de vie du bean dans une application à ressort. Décomposons le processus:
Phase 1: Initialisation du contexte de l'application
L'application commence par créer un printemps AnnotationConfigApplicationContext
en utilisant TenantConfig
comme source de configuration. Cela déclenche le processus de découverte et d'initialisation des haricots de Spring.
Phase 2: Définition et numérisation du bean
TenantConfig
, annoté avec @Configuration
, définit deux haricots: tenantA-dataSource
et tenantB-dataSource
, les deux instances de TenantDataSource
. L'annotation @ComponentScan
demande au ressort de scanner le package org.example4
pour les composants, la découverte et l'enregistrement TenantService
(en raison de sa @Service
annotation).
Phase 3: Création de haricots et injection de dépendance
Spring Instancie désormais les haricots TenantDataSource
. Surtout, TenantDataSource
implémente BeanNameAware
. La méthode setBeanName()
de cette interface est appelée par Spring, permettant à chaque instance TenantDataSource
de déterminer dynamiquement son nom de locataire (par exemple, "Tenanta" ou "TenantB") et configurer son URL de base de données en conséquence.
Ensuite, le printemps crée le TenantService
haricot. L'annotation @Autowired
sur le constructeur, combinée avec des annotations @Qualifier
, garantit que les instances TenantDataSource
correctes sont injectées sous forme de dépendances. Il s'agit d'injection de dépendance basée sur le constructeur.
Phase 4: récupération de bean et exécution de la méthode
La méthode main
récupère le bean TenantService
entièrement configuré dans le contexte de l'application à l'aide de context.getBean(TenantService.class)
. Enfin, tenantService.processTenantData()
est appelé. Cette méthode utilise les haricots injectés TenantDataSource
pour se connecter aux bases de données respectives ("Tenanta_DB" et "TenantB_DB"), démontrant l'injection de dépendance et la gestion du cycle de vie des bean.
Concepts clés mis en évidence:
TenantDataSource
instances) dans TenantService
automatiquement. BeanNameAware
présente un point spécifique dans le cycle de vie des haricots où les haricots peuvent réagir à leur nom assigné. Cette explication détaillée et le diagramme visuel fournissent une compréhension claire du processus d'initialisation des haricots de ressort, en se concentrant sur l'injection de dépendance et le cycle de vie des haricots.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!