Assemblage automatique SpringBoot
Processus de démarrage de SpringBoot
注意:此博文只为记录自己DEBUG 源码核心过程,大家可能看不太明白,还请谅解!
Commencer la préparation
- Commencer la classe comme entrée
- Entrez la méthode d'exécution
- Création d'un programme SpringBoot
- Constructeur SpringApplication
- Entrez la méthode getSpringFactoriesInstances
- Entrez la méthode loadFactoryNames
- Entrez loadSpringFactories
Le chemin des ressources chargé ici est exactement le chemin de spring.factories!
Retour à la méthode getSpringFactoriesInstances
Instancier par réflexion
- Après avoir chargé les classes sous ApplicationContextInitializer dans spring.factories, un total de sept classes sont chargées
Les sept catégories sont:
- Définissez la collection de classes obtenue sur la propriété initializers
-
ApplicationListener est similaire à ce qui précède
Principales étapes de fonctionnement
- Préparation environnementale
- Entrez la méthode prepareContext
-
Chargez la classe de démarrage principale à la fin de la méthode prepareContext
-
Entrez la méthode load ()
在 @SpringBootApplication =》 @SpringBootConfiguration =》 @Configuration 中
- Entrez la méthode AbstractApplicationContext.refresh ()
Regardez cette classe, utilisez la recherche globale pour trouver qu'il n'y a pas de telle classe
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
Trouvez l'utilisation de cet attribut et constatez qu'il exécute en fait une classe ConfigurationClassPostProcessor
Cette classe se trouve être une classe étendue de BeanFactoryPostProcessor
Continuez à exécuter et entrez cette méthode
À ce stade, le programme entre dans la classe ConfigurationClassPostProcessor mentionnée précédemment
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
Trier la classe de démarrage principale ici
Analyser les classes modifiées par @Configuration
Jusqu'à l'entrée
Trouver cette méthode est la vraie logique d'analyse
Focus sur @Import
Il y a principalement deux
Continuer l'exécution et revenir à la méthode parse
Trouvez la méthode de processus du bas
La classe EnableAutoConfiguration ici et la classe correspondante dans spring.factories