La dernière version mineure de Spring Cloud Sleuth est 3.1. Vous pouvez vérifier la succursale 3.1.x pour les derniers commits.
Avertissement | Spring Cloud Sleuth ne fonctionnera pas avec Spring Boot 3.x en avant. La dernière version majeure de Spring Boot que Sleuth prendra en charge est 2.x. |
Le cœur de ce projet a été déplacé vers le projet de traçage micrométrique et les instruments seront déplacés vers le micromètre et tous les projets respectifs (toutes les instrumentations ne seront plus effectuées dans un seul référentiel.
Vous pouvez consulter le guide de migration de traçage micrométrique pour apprendre à migrer du tracé du nuage de nuages de printemps vers le traçage des micromètres.
Spring Cloud Sleuth fournit une configuration automatique de démarrage de Spring pour le traçage distribué.
Sleuth configure tout ce dont vous avez besoin pour commencer. Cela inclut où les données de trace (portées) sont signalées, le nombre de traces à conserver (échantillonnage), si des champs distants (bagages) sont envoyés et quelles bibliothèques sont tracées.
Ajoutez Spring Cloud Sleuth au chemin de classe d'une application Spring Boot (avec une implémentation de traceur) et vous verrez des ID de trace dans les journaux. Exemple de détection avec un brave traceur:
<! - Spring Cloud Sleuth nécessite une bom de Cloud Spring -> <Dependencymanagement>
<dépendances>
<dépendance>
<groupId> org.springframework.cloud </prouved>
<ArtefactId> Spring-Cloud-Dependcesntency </ Artifactid> <! - Fournissez la dernière version de train de version Spring Cloud stable (par exemple 2020.0.0) -> <version> $ {release.train.version} </ version>
<ype> pom </pype>
<ccope> Import </ccope>
</Dependance>
</DENDENDENCES>
</Dependencymanagement>
<Dendecces> <! - Support Web de démarrage -> <dépendance>
<GroupId> org.springFramework.boot </romp grouped>
<ArtefactId> Spring-Boot-Starter-Web </refactive>
</Dependance> <! - Sleuth avec une implémentation de traceur courageuse -> <dependency>
<groupId> org.springframework.cloud </prouved>
<ArtefactId> Spring-Cloud-Starter-Seuth </refactive>
</Dependance>
</DENDENDENCES>Considérez le gestionnaire HTTP suivant:
@RestControllerPublic class DemoController {private static logger log = loggerfactory.getLogger (DemoController.class); @ requestmapping ("/") public String home () {log.info ("Handling Home"); return "Hello World";
}
} Si vous ajoutez ce gestionnaire à un contrôleur, vous pouvez voir les appels à home() tracé dans les journaux (remarquez les ID 0b6aaf642574edd3 ).
2020-10-21 12: 01: 16.285 info [, 0b6aaf642574edd3,0b6aaf642574edd3, true] 289589 --- [Nio-9000-Exec-1] Democontroller: Gestion de la maison!
Note | Au lieu de journaliser explicitement la demande dans le gestionnaire, vous pouvez définir logging.level.org.springframework.web.servlet.DispatcherServlet=DEBUG . |
Note | Définissez spring.application.name=myService (par exemple) pour voir le nom du service ainsi que les ID de trace et de span. |
Veuillez visiter la page de documentation pour en savoir plus sur le projet.
Pour construire la source, vous devrez installer JDK 1.8.
Spring Cloud utilise Maven pour la plupart des activités liées à la construction, et vous devriez être en mesure de démarrer assez rapidement en clonant le projet qui vous intéresse et en tapant
$ ./MVNW Installation
Note | Vous pouvez également installer maven (> = 3.3.3) vous-même et exécuter la commande mvn à la place de ./mvnw dans les exemples ci-dessous. Si vous faites cela, vous devrez peut-être également ajouter -P spring si vos paramètres Maven locaux ne contiennent pas de déclarations de référentiel pour les artefacts de pré-libération printanier. |
Note | Sachez que vous devrez peut-être augmenter la quantité de mémoire disponible pour Maven en définissant une variable d'environnement MAVEN_OPTS avec une valeur comme -Xmx512m -XX:MaxPermSize=128m . Nous essayons de couvrir cela dans la configuration .mvn , donc si vous constatez que vous devez le faire pour réussir une construction, veuillez lever un billet pour faire ajouter les paramètres au contrôle de la source. |
Les projets qui nécessitent du middleware (c.-à-d. Redis) pour les tests nécessitent généralement qu'une instance locale de [docker] (https://www.docker.com/get-started) est installée et en cours d'exécution.
Le module Spring-Cloud-Build a un profil "DOCS", et si vous y retournez, il essaiera de construire des sources ASCIIDOC à partir de src/main/asciidoc . Dans le cadre de ce processus, il recherchera un README.adoc et le traitera en chargeant tous les incluses, mais pas l'analyse ou la renforce, la copie simplement sur ${main.basedir} ${basedir} par défaut du projet). S'il y a des modifications dans la lecture, il apparaîtra alors après une version Maven en tant que fichier modifié au bon endroit. Engagez-le et poussez le changement.
Si vous n'avez pas de préférence IDE, nous vous recommandons d'utiliser Spring Tools Suite ou Eclipse lorsque vous travaillez avec le code. Nous utilisons le plugin Eclipse M2ECLIPSE pour le support Maven. D'autres IDE et outils devraient également fonctionner sans problème tant qu'ils utilisent Maven 3.3.3 ou mieux.
Les projets de cloud de printemps exigent que le profil maven `` printemps '' soit activé pour résoudre les référentiels de jalons de printemps et d'instantanés. Utilisez votre IDE préféré pour définir ce profil pour être actif, ou vous pouvez ressentir des erreurs de création.
Nous recommandons le plugin Eclipse M2ECLIPSE lorsque vous travaillez avec Eclipse. Si vous n'avez pas déjà installé M2ECLIPSE, il est disponible à partir du "Eclipse Marketplace".
Note | Les versions plus anciennes de M2E ne prennent pas en charge Maven 3.3, donc une fois les projets importés dans Eclipse, vous devrez également dire à M2EClipse d'utiliser le bon profil pour les projets. Si vous voyez de nombreuses erreurs différentes liées aux POM dans les projets, vérifiez que vous avez une installation à jour. Si vous ne pouvez pas mettre à niveau M2E, ajoutez le profil "Spring" à votre settings.xml . Alternativement, vous pouvez copier les paramètres du référentiel à partir du profil "Spring" du POM POM dans votre settings.xml . |
Si vous préférez ne pas utiliser m2eclipse, vous pouvez générer des métadonnées du projet Eclipse à l'aide de la commande suivante:
$ ./Mvnw Eclipse: Eclipse
Les projets Eclipse générés peuvent être importés en sélectionnant import existing projects à partir du menu file .
Spring Cloud est publié sous la licence APACHE 2.0 non restrictive et suit un processus de développement GitHub très standard, en utilisant GitHub Tracker pour les problèmes et fusionnant les demandes de traction dans Master. Si vous voulez contribuer même quelque chose de trivial, n'hésitez pas, mais suivez les directives ci-dessous.
Avant d'accepter un correctif non trivial ou une demande de traction, nous aurons besoin de vous pour signer le contrat de licence de contributeur. La signature de l'accord du contributeur n'accorde pas à personne de commettre des droits sur le référentiel principal, mais cela signifie que nous pouvons accepter vos contributions, et vous obtiendrez un crédit d'auteur si nous le faisons. Les contributeurs actifs pourraient être invités à rejoindre l'équipe de base et à avoir la possibilité de fusionner les demandes de traction.
Ce projet adhère au Code de conduite de l'alliance des contributeurs. En participant, vous devez maintenir ce code. Veuillez signaler un comportement inacceptable à [email protected].
Aucun de ces éléments n'est essentiel pour une demande de traction, mais ils aideront tous. Ils peuvent également être ajoutés après la demande de traction d'origine mais avant une fusion.
Utilisez les conventions de format de code Spring Framework. Si vous utilisez Eclipse, vous pouvez importer des paramètres de format à l'aide du fichier eclipse-code-formatter.xml à partir du projet Spring Cloud Build. Si vous utilisez Intellij, vous pouvez utiliser le plugin de format de code Eclipse pour importer le même fichier.
Assurez-vous que tous les nouveaux fichiers .java pour avoir un simple commentaire de classe Javadoc avec au moins une balise @author vous identifiant, et de préférence au moins un paragraphe sur la classe.
Ajoutez le commentaire de l'en-tête de licence ASF à tous les nouveaux fichiers .java (copier à partir des fichiers existants dans le projet)
Ajoutez-vous en tant que @author aux fichiers .java que vous modifiez considérablement (plus que les modifications cosmétiques).
Ajoutez des javadocs et, si vous modifiez l'espace de noms, certains éléments du DOC XSD.
Quelques tests unitaires aideraient également beaucoup - quelqu'un doit le faire.
Si personne d'autre n'utilise votre branche, veuillez la réprimander contre le maître actuel (ou toute autre branche cible dans le projet principal).
Lors de la rédaction d'un message de validation, veuillez suivre ces conventions, si vous résolvez un problème existant, veuillez ajouter Fixes gh-XXXX à la fin du message de validation (où XXXX est le numéro de problème).
Spring Cloud Build est livré avec un ensemble de règles de style CheckStyle. Vous pouvez les trouver dans le module spring-cloud-build-tools . Les fichiers les plus notables sous le module sont:
Spring-Cloud-Build-Tools /
└fiques
├fiques
│ └fique
└fiques
Ressources
├fique
└fiquesRègles par défaut de contrôle
Configuration de l'en-tête de fichier
Règles de suppression par défaut
Les règles de contrôle sont désactivées par défaut . Pour ajouter CheckStyle à votre projet, définissez simplement les propriétés et plugins suivants.
pom.xml
<propriétés>
<Maven-Checkstyle-Plugin.failSonerror> true </maven-Checkstyle-Plugin.failsonerror> (1) <Maven-Checkstyle-Plugin.failSonviolation> True
</Maven-Checkstyle-Plugin.failSonviolation> (2) <Maven-Checkstyle-Plugin.IncludeStSourceDirectory> True
</Maven-Checkstyle-Plugin.IncludeStSourceDirectory> (3) </properties>
<fuild>
<frôins>
<s plugin> (4) <GroupId> io.spring.javaformat </romproupID>
<ArtefactId> printemps-javaformat-maven-plugin </tefactive>
</ plugin>
<harin> (5) <GroupId> org.apache.maven.plugins </rombandid>
<ArtefactId> Maven-Checkstyle-Plugin </Retifactid>
</ plugin>
</plugins>
<reporting>
<frôins>
<harin> (5) <GroupId> org.apache.maven.plugins </rombandid>
<ArtefactId> Maven-Checkstyle-Plugin </Retifactid>
</ plugin>
</plugins>
</porting>
</ build>Échoue la construction sur les erreurs de style vérification
Échoue la construction lors des violations de style Checkstyle
Analyse de contrôle de contrôle également les sources de test
Ajoutez le plugin de format Java Spring qui reformatera votre code pour adopter la plupart des règles de mise en forme de contrôle
Ajoutez un plugin CheckStyle à vos phases de construction et de rapport
Si vous avez besoin de supprimer certaines règles (par exemple, la longueur de ligne doit être plus longue), il vous suffit de définir un fichier sous ${project.root}/src/checkstyle/checkstyle-suppressions.xml avec vos suppressions. Exemple:
projectroot / src / checkstyle / checkstyle-uppresions.xml
<? xml version = "1.0"?> <! Doctype Suppressions Public "- // Puppy Crawl // Dtd Supressions 1.1 // en" "https://www.puppycrawl.com/dtds/suppressions_1_1.dtd"> <suppressions> <suppress files = ". * ConfigServerApplication.java" checks = "hideutilityClassConstructor" /> <suppress files = ". * ConfigClientWatch.java" checks = "lineLengthcheck" /> </ suppressions>
Il est conseillé de copier le ${spring-cloud-build.rootFolder}/.editorconfig et ${spring-cloud-build.rootFolder}/.springformat à votre projet. De cette façon, certaines règles de formatage par défaut seront appliquées. Vous pouvez le faire en exécutant ce script:
$ curl https://raw.githubusercontent.com/spring-cloud/spring-cloud-build/3.1.x/.editorconfig -o .editorconfig $ touch .springformat
Afin de configurer Intellij, vous devez importer nos conventions de codage, des profils d'inspection et configurer le plugin CheckStyle. Les fichiers suivants peuvent être trouvés dans le projet Spring Cloud Build.
Spring-Cloud-Build-Tools /
└fiques
├fiques
│ └fique
└fiques
Ressources
├fique
├fiques
└til - Intellij
├fiquesl
└── Intellij_spring_boot_java_conventions.xml (5)Règles par défaut de contrôle
Configuration de l'en-tête de fichier
Règles de suppression par défaut
Projet par défaut pour IntelliJ qui applique la plupart des règles de contrôle
Conventions de style de projet pour Intellij qui appliquent la plupart des règles de contrôle
Figure 1. Style de code
Allez dans File → Settings → Editor → Code style . Cliquez sur l'icône à côté de la section Scheme . Là, cliquez sur la valeur Import Scheme et choisissez l'option Intellij IDEA code style XML . Importez le spring-cloud-build-tools/src/main/resources/intellij/Intellij_Spring_Boot_Java_Conventions.xml .
Figure 2. Profils d'inspection
Allez dans File → Settings → Editor → Inspections . Cliquez sur l'icône à côté de la section Profile . Là, cliquez sur le Import Profile et importez le spring-cloud-build-tools/src/main/resources/intellij/Intellij_Project_Defaults.xml .
Camion
Pour que Intellij travaille avec CheckStyle, vous devez installer le plugin Checkstyle . Il est conseillé d'installer également les Assertions2Assertj pour convertir automatiquement les assertions Junit
Allez dans File → Settings → Other settings → Checkstyle . Cliquez sur l'icône + dans la section Configuration file . Là, vous devrez définir où les règles de contrôle de contrôle doivent être choisies. Dans l'image ci-dessus, nous avons choisi les règles du référentiel de build Spring Cloud cloné. Cependant, vous pouvez pointer le référentiel GitHub du Spring Cloud Build (par exemple pour le checkstyle.xml : https://raw.githubusercontent.com/spring-cloud/spring-cloud-build/3.1.x/spring-cloud-build-tools/src/main/resources/checkstyle.xml ). Nous devons fournir les variables suivantes:
checkstyle.header.file - veuillez le pointer vers les build de Spring Cloud, spring-cloud-build-tools/src/main/resources/checkstyle-header.txt fichier dans votre référentiel cloné ou via le https://raw.githubusercontent.com/spring-cloud/spring-cloud-build/3.1.x/spring-cloud-build-tools/src/main/resources/checkstyle-header.txt url.
checkstyle.suppressions.file - Suppressions par défaut. Veuillez le pointer vers le fichier Spring Cloud Build, spring-cloud-build-tools/src/checkstyle/checkstyle-suppressions.xml dans votre référentiel cloné ou via le https://raw.githubusercontent.com/spring-cloud/spring-cloud-build/3.1.x/spring-cloud-build-tools/src/checkstyle/checkstyle-suppressions.xml url.
checkstyle.additional.suppressions.file - Cette variable correspond aux suppressions dans votre projet local. Par exemple, vous travaillez sur spring-cloud-contract . Pointez ensuite vers le dossier project-root/src/checkstyle/checkstyle-suppressions.xml . L'exemple de spring-cloud-contract serait: /home/username/spring-cloud-contract/src/checkstyle/checkstyle-suppressions.xml .
Important | N'oubliez pas de définir la Scan Scope sur All sources car nous appliquons des règles de style CheckStyle pour les sources de production et de test. |
Spring Cloud Build apporte le basepom:duplicate-finder-maven-plugin , qui permet de signaler des classes et des ressources en double et conflictuels sur le chemin de classe Java.
Duplicate Finder est activé par défaut et s'exécutera dans la phase verify de votre version Maven, mais il ne prendra effet dans votre projet que si vous ajoutez le duplicate-finder-maven-plugin à la section build du pom.xml du Projecst.
pom.xml
<fuild>
<frôins>
<fruit>
<groupId> org.basepom.maven </rom grouped>
<ArtefactId> Duplicate-Finder-Maven-Plugin </ Arfactive>
</ plugin>
</plugins>
</ build>Pour d'autres propriétés, nous avons défini les valeurs par défaut comme indiqué dans la documentation du plugin.
Vous pouvez facilement les remplacer mais définir la valeur de la propriété sélectionnée préfixée avec duplicate-finder-maven-plugin . Par exemple, définissez duplicate-finder-maven-plugin.skip sur true afin de sauter des doublons vérifier votre version.
Si vous devez ajouter ignoredClassPatterns ou ignoredResourcePatterns à votre configuration, assurez-vous de les ajouter dans la section de configuration du plugin de votre projet:
<fuild>
<frôins>
<fruit>
<groupId> org.basepom.maven </rom grouped>
<ArtefactId> Duplicate-Finder-Maven-Plugin </ Arfactive>
<In configuration>
<ignoreclasspatterns>
<ignoreClasspattern> org.joda.time.base.baseDateTime </ ignoreclasspattern>
<ignoreClasspattern>. * Module-info </ ignoreClasspattern>
</ ignoreclasspatterns>
<ignoreResourcePatterns>
<ignoreResourcePattern> ChangeLog.txt </ ignoreResourcePattern>
</ ignoreResourcePatterns>
</FIGIGURATION>
</ plugin>
</plugins>
</ build>