编程知识 cdmana.com

️ Push to interview in Large Factory ᥧ - - Spring Boot Automatic Assembly Principle

Table des matières

Un.、pom.xmlDocumentation

1.Le père dépend

2.Démarreur:

 2.、Procédure principale:

​    Analyse de l'annotation du code source:

Trois、Conclusions:


Un.、pom.xmlDocumentation

1.Le père dépend

 Dépend principalement d'un projet parent,Gérer le filtrage des ressources et les plug - ins pour les projets!

Le filtrage des ressources a été configuré , Pas besoin de configurer

 Inpom.xml Il y a une dépendance parentale :spring-boot-dependencies- Oui.SpringBootCentre de contrôle de version pour!

Parce qu'il y a ces versions de l'entrepôt ,Nous écrivons ou introduisonsspringbootQuand on est dépendant,La version spécifiée n'est pas nécessaire!

2.Démarreur:

Le démarreur est SpringbootScénario de démarrage pour;

Par exemple,spring-boot-starter-web, Il nous aidera à importer automatiquement web Toutes les dépendances de l'environnement !

springbootTous les scénarios fonctionnels, Tout devient un starter(Démarreur) Quelles fonctions devons - nous utiliser , Il suffit de trouver l'initiateur correspondant !

 2.、Procédure principale:

Analyse de l'annotation du code source:

 @SpringBootConfiguration: springbootConfiguration de

        @configuration:springConfigurer la classe

        @Component:    Ça veut dire que c'est aussi springComponents

@EnableAutoConfiguration:Configuration automatique

        @AutoConfigurationPackage:Paquet de configuration automatique
            @Import(AutoConfigurationPackages.Registrar.class):Configuration automatique' Enregistrement des paquets '
        @Import(AutoConfigurationImportSelector.class): Configurer automatiquement la sélection d'importation 
//Obtenir toutes les configurations
List<String> configurations = getCandidateConfigurations(annotationMetadata,attributes);

Obtenir la configuration du candidat

protected List<String> getCandidateConfigurations(AnnotationMetadata metadata,
  AnnotationAttributes attributes) {
  List<String> configurations = SpringFactoriesLoader.loadFactoryNames(
        getSpringFactoriesLoaderFactoryClass(), getBeanClassLoader());
   Assert.notEmpty(configurations,
	 "No auto configuration classes found in META-INF/spring.factories. If you "
	+ "are using a custom packaging, make sure that file is correct.");
   return configurations;
}

 META-INF/spring.factories: Fichiers de base configurés automatiquement

 

Configuration automatique

Properties properties = PropertiesLoaderUtils.loadProperties(resource);
 Toutes les ressources sont chargées dans la classe de configuration !

 Alors...,springboot Toutes les configurations automatiques sont scannées et chargées au démarrage  spring.factories Toutes les classes de configuration automatique sont ici , Mais pas nécessairement efficace , Pour déterminer si la condition est valide , Il suffit d'importer start, Il y aura un démarreur correspondant , Avec le démarreur , L'assemblage automatique prendra effet , Et la configuration a réussi !

Trois、Conclusions:

1. springbootAu démarrage,Sous le chemin de classe/META-INF/ spring.factoriesObtient la valeur spécifiée!
2. Importer ces classes configurées automatiquement dans le conteneur , La configuration automatique prendra effet , Aide - moi à configurer automatiquement !
3. Ce que nous avions besoin de configurer manuellement avant ,MaintenantspringbootIl l'a fait pour nous.!
4.IntégrationjavaEE, Les solutions et les configurations automatiques sont spring-boot-autoconfigure-2.1.4.RELEASE.jarSous ce sac.!
5.Il prend tous les composants à importer,Renvoie comme nom de classe, Ces composants sont ajoutés au conteneur !
6. Il y aura aussi beaucoup de xxxAutoConfigurationDocuments(@Bean), Ce sont ces classes qui importent tous les composants nécessaires à ce scénario dans le conteneur !

版权声明
本文为[LongDi - IDEA]所创,转载请带上原文链接,感谢
https://cdmana.com/2021/10/20211013211842772q.html

Scroll to Top