Maison >Java >javaDidacticiel >printemps: logique-exécution-ordre et code-flux

printemps: logique-exécution-ordre et code-flux

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2025-01-28 22:12:10922parcourir

spring-: logical-execution-order-and-code-flow

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:

  • Injection de dépendance (DI): Spring injecte les dépendances nécessaires (TenantDataSource instances) dans TenantService automatiquement.
  • cycle de vie des bean: L'interface BeanNameAware présente un point spécifique dans le cycle de vie des haricots où les haricots peuvent réagir à leur nom assigné.
  • @configuration et @componentscan: Ces annotations sont au cœur du mécanisme de configuration de Spring, définissant les haricots et scannant pour les composants.
  • @Autowired et @qualifier: Ces annotations contrôlent l'injection de dépendance, assurant un câblage de bean correct.
  • Contaiteur IOC: Le contexte de l'application de ressort agit comme le conteneur IOC (inversion du contrôle), gérant le cycle de vie entier des haricots.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn