[Analyse du code source] DÉBOGAGE du code source de l'assemblage automatique SpringBoot

Assemblage automatique SpringBoot

Processus de démarrage de SpringBoot

注意:此博文只为记录自己DEBUG 源码核心过程,大家可能看不太明白,还请谅解!

Commencer la préparation

  1. Commencer la classe comme entrée

Insérez la description de l'image ici

  1. Entrez la méthode d'exécution

Insérez la description de l'image ici

  1. Création d'un programme SpringBoot

Insérez la description de l'image ici

  1. Constructeur SpringApplication

Insérez la description de l'image ici

  1. Entrez la méthode getSpringFactoriesInstances

Insérez la description de l'image ici

  1. Entrez la méthode loadFactoryNames

Insérez la description de l'image ici

  1. Entrez loadSpringFactories

Insérez la description de l'image ici

Le chemin des ressources chargé ici est exactement le chemin de spring.factories!

Retour à la méthode getSpringFactoriesInstances

Insérez la description de l'image ici

Instancier par réflexion

Insérez la description de l'image ici

  1. Après avoir chargé les classes sous ApplicationContextInitializer dans spring.factories, un total de sept classes sont chargées

Insérez la description de l'image ici

Les sept catégories sont:

Insérez la description de l'image ici

Insérez la description de l'image ici

  1. Définissez la collection de classes obtenue sur la propriété initializers

Insérez la description de l'image ici

  1. ApplicationListener est similaire à ce qui précède

    Insérez la description de l'image ici

Principales étapes de fonctionnement

  1. Préparation environnementale

Insérez la description de l'image ici

Insérez la description de l'image ici

  1. Entrez la méthode prepareContext

Insérez la description de l'image ici

  1. Chargez la classe de démarrage principale à la fin de la méthode prepareContext

    Insérez la description de l'image ici

  2. Entrez la méthode load ()

    Insérez la description de l'image ici

    Insérez la description de l'image ici

Insérez la description de l'image ici

Insérez la description de l'image ici

Insérez la description de l'image ici

在 @SpringBootApplication =》 @SpringBootConfiguration =》 @Configuration 中

Insérez la description de l'image ici

Insérez la description de l'image ici

Insérez la description de l'image ici

  1. Entrez la méthode AbstractApplicationContext.refresh ()

Insérez la description de l'image ici

Insérez la description de l'image ici

Insérez la description de l'image ici

Regardez cette classe, utilisez la recherche globale pour trouver qu'il n'y a pas de telle classe

Insérez la description de l'image ici

Recherchez la classe AnnotationConfigUtils et trouvez qu'elle contient un attribut dont la valeur est la même que celle de la classe précédente

Insérez la description de l'image ici

Trouvez l'utilisation de cet attribut et constatez qu'il exécute en fait une classe ConfigurationClassPostProcessor

Insérez la description de l'image ici

Cette classe se trouve être une classe étendue de BeanFactoryPostProcessor

Insérez la description de l'image ici

Continuez à exécuter et entrez cette méthode

Insérez la description de l'image ici

Insérez la description de l'image ici

Insérez la description de l'image ici

À ce stade, le programme entre dans la classe ConfigurationClassPostProcessor mentionnée précédemment

Insérez la description de l'image ici

Si elle n'est pas modifiée par @Configuration, retournez directement. Évidemment, la classe de démarrage principale est modifiée, alors continuez à exécuter

Insérez la description de l'image ici

Trier la classe de démarrage principale ici
Insérez la description de l'image ici

Analyser les classes modifiées par @Configuration

Insérez la description de l'image ici

Insérez la description de l'image ici

Insérez la description de l'image ici

Jusqu'à l'entrée

Insérez la description de l'image ici

Trouver cette méthode est la vraie logique d'analyse

Insérez la description de l'image ici

Insérez la description de l'image ici

Insérez la description de l'image ici

Focus sur @Import

Insérez la description de l'image ici

Insérez la description de l'image ici

Insérez la description de l'image ici

Il y a principalement deux

Insérez la description de l'image ici

Insérez la description de l'image ici

Continuer l'exécution et revenir à la méthode parse

Insérez la description de l'image ici

Trouvez la méthode de processus du bas
Insérez la description de l'image ici

Insérez la description de l'image ici

Insérez la description de l'image ici
Insérez la description de l'image ici

Insérez la description de l'image ici

Insérez la description de l'image ici

Insérez la description de l'image ici

Insérez la description de l'image ici

Insérez la description de l'image ici

Insérez la description de l'image ici

Insérez la description de l'image ici

La classe EnableAutoConfiguration ici et la classe correspondante dans spring.factories

Insérez la description de l'image ici

Insérez la description de l'image ici

Je suppose que tu aimes

Origine blog.csdn.net/qq_42380734/article/details/108088513
conseillé
Classement