SpringBoot Le démarreur est un mécanisme très important d'abandonner la configuration complexe précédente, qui est un système unifié et intégré dans le démarreur, l'application n'a besoin que d'introduire dépendent de démarrage du maven, SpringBoot scannera automatiquement les informations à charge et démarrer le correspondant la configuration par défaut. Débarrassons-nous de la poignée de démarrage d'une variété de bibliothèques dépendant, vous devez configurer en proie à une variété d'informations. SpringBoot découvre automatiquement la classe Bean requise par le chemin de classpath, et enregistré dans le récipient du CIO. SpringBoot fournir un module démarrage de démarrage de printemps pour les applications professionnelles quotidiennes dépendent du développement de divers scénarios. Tous ces modules dépendent accepté de suivre la configuration par défaut personnalisée, et nous permet d'ajuster ces configurations, à savoir suivre « convention que la configuration » concept.
Pourquoi Personnaliser démarreur
Dans le travail de développement quotidien, souvent il y aura un module de configuration de service indépendant, nous mettons souvent dans un seul paquet particulier, et si un autre projet a besoin multiplexer cette fonction lorsque le code doit être copié sur le disque un autre projet, encore une fois réinsérés, plus de problèmes. Si nous serons indépendants du paquet de module de code de service conçu pour le travail d'un démarrage, le temps multiplexés en dépendant et doit être fait référence à la pom, SpringBoot nous pour terminer l'assemblage automatique.
Coutume de démarrage de nommage
démarreur SpringBoot fourni à ressort de manière nommée boot-démarreur-xxx. Recommandations officielles de démarrage personnalisés à l'aide des règles de nommage-boot-démarreur xxx-printemps. Pour distinguer éco démarreur SpringBoot fourni.
procédure
1. Créez un nouveau projet de printemps
Cela devrait Inutile de dire que, en utilisant l'idée de construire au printemps Initializr
Le projet est structuré comme suit
2.pom Configuration
<xml version = "1.0" encoding = "UTF-8"?> <project xmlns = "http://maven.apache.org/POM/4.0.0" xmlns: xsi = "http: //www.w3 .org / 2001 / XMLSchema instance » xsi: schemaLocation = "http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion> 4.0.0 </ modelVersion> <parent> <groupId> org.springframework.boot </ groupId> <artifactId> ressort-boot-démarreur-parent </ artifactId> <version> 2.2.6.RELEASE </ Version > <relativePath /> <! - parent recherche du référentiel -> </ parent> <groupId> demo-printemps-boot-démarreur </ groupId> <artifactId> demo </ artifactId> <version> 0.0.1-SNAPSHOT </ version> <name> demo </ name> <description> Projet de démonstration pour Spring Boot </ description> <propriétés> <java.version> 1.8 </java.version> </ propriétés> <dépendances> <dependency> <groupId> org.springframework.boot </ groupId> < artifactId> ressort-boot-démarreur </ artifactId> </ dependency> <dependency> <groupId> org.springframework.boot </ groupId> <artifactId> ressort-boot-autoconfigure </ artifactId> </ dependency> <dependency> <groupId> org.springframework.boot </ groupId> < artifactId>printemps-boot-configuration processeur </ artifactId> <option> true </ option> </ dependency> </ dependencies> <build> <plugins> <plugin> <groupId> org.springframework.boot </ groupId> <artifactId> ressort-boot-maven-plugin </ artifactId> </ plugin> </ plugins> </ build> </ project>
3. Définir une entité de mappage des informations de configuration de classe
Paquet demospringbootstart.demo.properties; importation org.springframework.boot.context.properties.ConfigurationProperties; / ** * @author: VIC * @date: 09/04/2020 15:04 dans la Créé * @description: les informations de configuration classe d'entité * / // cette annotation peut être les mêmes informations de configuration de préfixe mis en correspondance avec les classes d'entités par le nom de l' élément de configuration, ici , nous précisons le préfixe « demo », // vous pouvez sera « demo » comme préfixe pour obtenir des informations sur les éléments de configuration @ConfigurationProperties ( = préfixe "Demo" ) publique classe DemoProperties { Private Chaîne SayWhat, privé chaîne toWho, publique Chaîne getSayWhat () { retour SayWhat; } publics videssetSayWhat (String SayWhat) { ce .sayWhat = SayWhat; } Publique Chaîne getToWho () { retour toWho; } Publique vide setToWho (String toWho) { ce .toWho = toWho; } }
4. Définir la classe de configuration
emballer demospringbootstart.demo.config; importation demospringbootstart.demo.properties.DemoProperties; importation demospringbootstart.demo.service.DemoService; importation org.springframework.beans.factory.annotation.Autowired; importation org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; importation org.springframework.boot.context.properties.EnableConfigurationProperties; importation org.springframework.context.annotation.Bean; importation org.springframework.context.annotation.Configuration; / ** * @Author: VIC * @Date: Créé en 15:35 09/04/2020 * @description:配置类 * / //@Configuration déclaré en tant que classe de configuration, pour ne rien dire de @Configuration // L'annotation pour activer le support au- dessus de l' étape haricot de configuration d'annotation @ConfigurationProperties, // il est de dire @ConfigurationProperties de soutien de springboot, // ou vous pouvez également commenter @ConfigurationProperties ajouter @Configuration et @component sur l' identité de classe, les mêmes effets @EnableConfigurationProperties (DemoProperties. classe ) // @ConditionalOnProperty @Configuration utilisé pour contrôler si l'entrée en vigueur, en bref, est ce que nous pouvons contrôler @Configuration par YML ou propriétés de profil notes classe de configuration est en vigueur. @ConditionalOnProperty (préfixe = "Demo", name = "isOpen", havingValue = "true" ) publique classe DemoConfig { @Autowired privés DemoProperties Propriétés; @Bean publiqueDemoService demoService () { retour nouvelle DemoService (properties.getSayWhat (), properties.getToWho ()); } }
5. Fournir une classe de service
Package Frais de pénalité pour demospringbootstart.demo.service; / ** * @author: VIC * @date: la Créé en 15:28 09/04/2020 * @description: occasionnel mettre en œuvre un service, il n'y a vraiment rien ici, ce service est fourni au démarreur intégré affaires partie des appels * / publique classe la DemoService { publique chaîne SayWhat, publique chaîne toWho, publique le DemoService (SayWhat String, String toWho) { la présente .sayWhat = SayWhat, la présente .toWho = toWho; } publique Enfilez le sayHello () { retour le présent . + SayWhat "!!!" + la présente .toWho; } }
6. Nouveau fichier spring.factories (important)
Les spring.factories dans le dossier META-INF ci-dessous, document spring.factories se lit comme suit
# Automatisée assemblage, la raison pour laquelle ce fichier de configuration, springboot sera à l'assemblée de classe Democonfig configuré ici, les lecteurs peuvent aller regarder le mécanisme springboot de mise en œuvre du SPI ( le temps de se livrer à un blog)
org.springframework.boot.autoconfigure.EnableAutoConfiguration = demospringbootstart.demo.config.DemoConfig
7. Utilisation d'essai
Après les étapes ci-dessus, puis il suffit d'installer mvn propre, personnaliser une production de démarrage est terminée
====================== ====================== ligne de démarcation
Utiliser démarreur personnalisé
1. L'introduction de démarreur à charge
<dependency> <groupId> demo-printemps-boot-démarreur </ groupId> <artifactId> Démo </ artifactId> <version> 0.0.1-SNAPSHOT </ version> </ dependency>
2. Remplir le contenu du profil
demo.isopen = true demo.to -Qui = JACK demo.say -Quelle = HI
3. Ecrire le code pour appeler et voir le paragraphe
emballer com.zhaowa.course.design.controller; importation demospringbootstart.demo.service.DemoService; importation org.springframework.web.bind.annotation.RequestMapping; importation org.springframework.web.bind.annotation.RestController; importation javax.annotation.Resource; / ** * @Author: VIC * @Date: Créé en 15:53 09/04/2020 * @description: * / @RestController publique classe TestController { @Resource privée DemoService demoService; @RequestMapping ( "/" ) publique test String () { retourdemoService.sayHello (); } }