La última versión menor de Spring Cloud Sleuth es 3.1. Puede consultar la sucursal 3.1.x para obtener los últimos compromisos.
Advertencia | Spring Cloud Sleuth no funcionará con Spring Boot 3.x en adelante. La última versión importante de Spring Boot que Sleuth admitirá es 2.x. |
El núcleo de este proyecto se trasladó al proyecto de rastreo de micrómetro y las instrumentos se trasladarán a micrómetro y todos los proyectos respectivos (ya no se realizarán todas las instrumentos en un solo repositorio.
Puede verificar la Guía de migración de rastreo de micrómetro para aprender a migrar desde el detective de nubes de resorte al rastreo de micrómetro.
Spring Cloud Sleuth proporciona una configuración automática de arranque de primavera para el rastreo distribuido.
Sleuth configura todo lo que necesita para comenzar. Esto incluye dónde se informa los datos de rastreo (tramos), cuántas trazas para mantener (muestreo), si se envían campos remotos (equipaje) y qué bibliotecas se rastrean.
Agregue Spring Cloud Sleuth a la clase de una aplicación Spring Boot (junto con una implementación de Tracer) y verá ID de traza en los registros. Ejemplo de detective con trazador valiente:
* <pendencias> <pendencia> <MoupRid> org.springframework.cloud </groupid> <artifactID> Spring-Cloud-Dependencies </artifactid> <!-Proporcione la última versión de tren de lanzamiento de Spring Cloud Stable (por ejemplo, 2020.0.0)-> <versión> $ {versión.train.version} </versión> <proy> pom </type> <cope> import </cope> </pendency> </dependencias> </dependenceManagement> <PeSpendences> <!-Boot's Web Support-> <Spendency> <MoupRid> org.springframework.boot </groupid> <ArFactId> Spring-Boot-Starter-Web </artifactId> </dependence> <!-Sleuth con implementación de trazador valiente-> <pendency> <MoupRid> org.springframework.cloud </groupid> <artifactid> Spring-Cloud-Starter-Sleuth </artifactid> </pendency> </dependencias>
Considere el siguiente controlador HTTP:
@RestControllerPublic Class DeMocontroller {private static logger log = loggerFactory.getLogger (Democontroller.class);@requestmapping ("/") public string home () {log.info ("Handling Home"); return "Hello World"; } }
Si agrega ese controlador a un controlador, puede ver que las llamadas a home()
se rastrean en los registros (observe las ID 0b6aaf642574edd3
).
2020-10-21 12: 01: 16.285 Información [, 0b6aaf642574edd3,0b6aaf642574edd3, verdadero] 289589 --- [NIO-9000-EXEC-1] Democontrolador: ¡Manejo de hogar!
Nota | En lugar de registrar la solicitud en el controlador explícitamente, puede configurar logging.level.org.springframework.web.servlet.DispatcherServlet=DEBUG . |
Nota | Establezca spring.application.name=myService (por ejemplo) para ver el nombre del servicio, así como las identificaciones de traza y span. |
Visite la página de documentación para leer más sobre el proyecto.
Para construir la fuente, deberá instalar JDK 1.8.
Spring Cloud usa Maven para la mayoría de las actividades relacionadas con la construcción, y debería poder despegar con bastante rapidez clonando el proyecto que le interesa y escribe
$ ./mvnw install
Nota | También puede instalar Maven (> = 3.3.3) usted mismo y ejecutar el comando mvn en lugar de ./mvnw en los ejemplos a continuación. Si lo hace, es posible que también necesite agregar -P spring si su configuración local de Maven no contiene declaraciones de repositorio para artefactos de prelanzamiento de primavera. |
Nota | Tenga en cuenta que es posible que deba aumentar la cantidad de memoria disponible para MAVEN estableciendo una variable de entorno MAVEN_OPTS con un valor como -Xmx512m -XX:MaxPermSize=128m . Intentamos cubrir esto en la configuración .mvn , por lo que si encuentra que tiene que hacerlo para que una compilación tenga éxito, recaude un ticket para que se agregue la configuración al control de origen. |
Los proyectos que requieren el middleware (es decir, Redis) para las pruebas generalmente requieren que una instancia local de [Docker] (https://www.docker.com/get-started) esté instalada y ejecutada.
El módulo Spring-Cloud-Build tiene un perfil "Docs", y si lo cambia, intentará construir fuentes ASCIIDOC a partir de src/main/asciidoc
. Como parte de ese proceso, buscará un README.adoc
y lo procesará cargando todas las incluses, pero no analizándolo o convirtiéndolo, simplemente copiándolo a ${main.basedir}
(predeterminado a ${basedir}
, es decir, la raíz de la raíz del proyecto). Si hay algún cambio en el ReadMe, aparecerá después de una compilación Maven como un archivo modificado en el lugar correcto. Simplemente comprometiéndolo y presione el cambio.
Si no tiene una preferencia IDE, le recomendamos que use Spring Tools Suite o Eclipse cuando trabaje con el código. Utilizamos el complemento M2ECLIPSE Eclipse para soporte Maven. Otros IDE y herramientas también deberían funcionar sin problemas siempre que usen Maven 3.3.3 o mejor.
Los proyectos de Spring Cloud requieren que el perfil Maven 'Spring' se active para resolver el hito de primavera y los repositorios de instantáneas. Use su IDE preferido para establecer este perfil para que esté activo, o puede experimentar errores de compilación.
Recomendamos el complemento M2ECLIPSE Eclipse cuando trabaja con Eclipse. Si aún no tiene M2EClipse instalado, está disponible en el "Mercado de Eclipse".
Nota | Las versiones más antiguas de M2E no admiten Maven 3.3, por lo que una vez que los proyectos se importen al eclipse, también deberá decirle a M2ECLIPSE que use el perfil correcto para los proyectos. Si ve muchos errores diferentes relacionados con los POM en los proyectos, verifique que tenga una instalación actualizada. Si no puede actualizar M2E, agregue el perfil "Spring" a su settings.xml . Alternativamente, puede copiar la configuración del repositorio del perfil "Spring" del POM principal en su settings.xml . |
Si prefiere no usar M2ECLIPSE, puede generar metadatos del proyecto Eclipse usando el siguiente comando:
$ ./mvnw Eclipse: Eclipse
Los proyectos Eclipse generados se pueden importar seleccionando import existing projects
en el menú file
.
Spring Cloud se lanza bajo la licencia Apache 2.0 no restrictiva, y sigue un proceso de desarrollo de GitHub muy estándar, utilizando el rastreador de GitHub para problemas y fusionar solicitudes de extracción al maestro. Si desea contribuir incluso a algo trivial, no lo dude, pero siga las pautas a continuación.
Antes de aceptar un parche no trivial o una solicitud de extracción, necesitaremos que firme el acuerdo de licencia de contribuyente. Firmar el acuerdo del contribuyente no otorga a nadie que comete derechos al repositorio principal, pero sí significa que podemos aceptar sus contribuciones, y obtendrá un crédito del autor si lo hacemos. Se puede pedir a los contribuyentes activos que se unan al equipo central y dada la capacidad de fusionar las solicitudes de extracción.
Este proyecto se adhiere al Código de Conducta del Pacto de contribuyente. Al participar, se espera que mantenga este código. Informe un comportamiento inaceptable a Spring-Code- [email protected].
Nada de estos es esencial para una solicitud de extracción, pero todos ayudarán. También se pueden agregar después de la solicitud de extracción original pero antes de una fusión.
Use las convenciones de formato del código de marco Spring. Si usa Eclipse, puede importar la configuración de Formatter utilizando el archivo eclipse-code-formatter.xml
desde el proyecto Spring Cloud Build. Si usa IntelliJ, puede usar el complemento Formatter de código Eclipse para importar el mismo archivo.
Asegúrese de que todos los nuevos archivos .java
tengan un comentario de clase Javadoc simple con al menos una etiqueta de @author
que lo identifique, y preferiblemente al menos un párrafo sobre para qué sirve la clase.
Agregue el comentario del encabezado de licencia ASF a todos los nuevos archivos .java
(copie de archivos existentes en el proyecto)
Agregue usted mismo como @author
a los archivos .java que modifica sustancialmente (más que cambios cosméticos).
Agregue algunos javadocs y, si cambia el espacio de nombres, algunos elementos de DOC XSD.
Algunas pruebas unitarias también ayudarían mucho: alguien tiene que hacerlo.
Si nadie más está utilizando su rama, reídela con el maestro actual (u otra rama objetivo en el proyecto principal).
Al escribir un mensaje de confirmación, siga estas convenciones, si está solucionando un problema existente, agregue Fixes gh-XXXX
al final del mensaje de confirmación (donde xxxx es el número de problema).
Spring Cloud Build viene con un conjunto de reglas de checkstyle. Puede encontrarlos en el módulo spring-cloud-build-tools
. Los archivos más notables en el módulo son:
Toolas de construcción de nubes de primavera/
└── src ├iqutyle de checkstyle │ └── CheckStyle-Supplesions.xml (3) └── Main "Recursos ├── checkstyle-header.txt (2) └── checkstyle.xml (1)
Reglas de checkstyle predeterminadas
Configuración del encabezado del archivo
Reglas de supresión predeterminadas
Las reglas de checkStyle están deshabilitadas de forma predeterminada . Para agregar CheckStyle a su proyecto, simplemente defina las siguientes propiedades y complementos.
pom.xml
<Propiedades> <maven-checkstyle-plugin.failsonError> true </maven-checkstyle-plugin.failsonerror> (1) <maven-checkstyle-plugin.failsonviolation> verdadero </maven-checkstyle-plugin.failsonviolation> (2) <maven-checkstyle-plugin.includetSourCedirectory> Verdadero </maven-checkstyle-plugin.includeTestSourCedirectory> (3) </Properties> <11 construidos> <gotins> <glugin> (4) <MoupRoD> io.spring.javaformat </groupid> <artifactID> spring-javaformat-maven-plugin </artifactid> </tugin> <glugin> (5) <MoupRId> org.apache.maven.plugins </groupid> <ArFactId> Maven-CheckStyle-Plugin </ArtifactId> </tugin> </glugins> <neporting> <gotins> <glugin> (5) <MoupRId> org.apache.maven.plugins </groupid> <ArFactId> Maven-CheckStyle-Plugin </ArtifactId> </tugin> </glugins> </porting> </strato>
Falla la construcción de errores de estilo de checkStyle
Falla la construcción de violaciones de checkstyle
Análisis de checkstyle también las fuentes de prueba
Agregue el complemento de formato de Spring Java que reformatará su código para aprobar la mayoría de las reglas de formato de checkstyle
Agregue el complemento CheckStyle a sus fases de compilación e informes
Si necesita suprimir algunas reglas (por ejemplo, la longitud de la línea debe ser más larga), entonces es suficiente para que defina un archivo bajo ${project.root}/src/checkstyle/checkstyle-suppressions.xml
con sus supresiones. Ejemplo:
projectroot/src/checkstyle/checkstyle-suplesions.xml
<? xml versión = "1.0"?> <! Doctype Supresiones pública "-// Puppy Crawl // Supresiones DTD 1.1 // EN" "https://www.puppycrawl.com/dtds/supressions_1_1.dtd"> <S supresiones> <Supress files = ".*configServerApplication.java" checks = "HideutilityClassConstrucor"/> <Supress files = ".*configClientWatch.java" checks = "Linelengthcheck"/> </spressions>
Es aconsejable copiar ${spring-cloud-build.rootFolder}/.editorconfig
y ${spring-cloud-build.rootFolder}/.springformat
a su proyecto. De esa manera, se aplicarán algunas reglas de formato predeterminadas. Puedes hacerlo ejecutando este script:
$ curl https://raw.githubusercontent.com/spring-cloud/spring-cloud-build/3.1.x/.editorconfig -o .editorconfig $ touch .springformat
Para configurar IntelliJ, debe importar nuestras convenciones de codificación, perfiles de inspección y configurar el complemento de checkStyle. Los siguientes archivos se pueden encontrar en el proyecto Spring Cloud Build.
Toolas de construcción de nubes de primavera/
└── src ├iqutyle de checkstyle │ └── CheckStyle-Supplesions.xml (3) └── Main "Recursos ├── checkstyle-header.txt (2) ├── checkstyle.xml (1) └── IntelliJ ├── IntelliJ_Project_Defaults.xml (4) └── IntelliJ_Spring_Boot_Java_Conventions.xml (5)
Reglas de checkstyle predeterminadas
Configuración del encabezado del archivo
Reglas de supresión predeterminadas
Predeterminados del proyecto para IntelliJ que aplican la mayoría de las reglas de checkstyle
Convenciones de estilo de proyecto para IntelliJ que aplican la mayoría de las reglas de checkstyle
Figura 1. Estilo de código
Vaya a File
→ Settings
→ Editor
→ Code style
. Hace que haga clic en el icono junto a la sección Scheme
. Allí, haga clic en el valor Import Scheme
y elija la opción Intellij IDEA code style XML
. Importe las spring-cloud-build-tools/src/main/resources/intellij/Intellij_Spring_Boot_Java_Conventions.xml
.
Figura 2. Perfiles de inspección
Vaya a File
→ Settings
→ Editor
→ Inspections
. Allí, haga clic en el icono junto a la sección Profile
. Allí, haga clic en el Import Profile
e importe las spring-cloud-build-tools/src/main/resources/intellij/Intellij_Project_Defaults.xml
File.
Estilo de control
Para que IntelliJ funcione con CheckStyle, debe instalar el complemento Checkstyle
. Es aconsejable instalar también las Assertions2Assertj
para convertir automáticamente las afirmaciones JUnit
Vaya a File
→ Settings
→ Other settings
→ Checkstyle
. Hace que haga clic en el icono +
en la sección Configuration file
. Allí, tendrá que definir de dónde se deben elegir las reglas de checkstyle. En la imagen de arriba, hemos elegido las reglas del repositorio de compilación de la nube de Spring Cloned. Sin embargo, puede señalar el repositorio de GitHub de Spring Cloud (por ejemplo, para checkstyle.xml
: https://raw.githubusercontent.com/spring-cloud/spring-cloud-build/3.1.x/spring-cloud-build-tools/src/main/resources/checkstyle.xml
cloud-build/3.1.x/spring-cloud-build-- https://raw.githubusercontent.com/spring-cloud/spring-cloud-build/3.1.x/spring-cloud-build-tools/src/main/resources/checkstyle.xml
). Necesitamos proporcionar las siguientes variables:
checkstyle.header.file
: póngalo a la construcción de la nube de primavera, spring-cloud-build-tools/src/main/resources/checkstyle-header.txt
, ya sea en su repositorio clonado o a través del 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
: supresiones predeterminadas. Por favor, pídelo a las spring-cloud-build-tools/src/checkstyle/checkstyle-suppressions.xml
ya sea en su repositorio clonado o a través del 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
: esta variable corresponde a supresiones en su proyecto local. Por ejemplo, estás trabajando en spring-cloud-contract
. Luego, apunte a la carpeta project-root/src/checkstyle/checkstyle-suppressions.xml
. El ejemplo para spring-cloud-contract
sería: /home/username/spring-cloud-contract/src/checkstyle/checkstyle-suppressions.xml
.
Importante | Recuerde establecer el Scan Scope en All sources ya que aplicamos reglas de checkStyle para fuentes de producción y prueba. |
Spring Cloud Build trae a lo largo de basepom:duplicate-finder-maven-plugin
, que permite marcar clases y recursos duplicados y conflictivos en el Java ClassPath.
Duplicate Finder está habilitado de forma predeterminada y se ejecutará en la fase verify
de su compilación Maven, pero solo entrará en vigencia en su proyecto si agrega el duplicate-finder-maven-plugin
a la sección build
del pom.xml
de Projecst.
pom.xml
<11 construidos> <gotins> <Clugin> <MoupRId> org.basepom.maven </groupid> <ArFactId> Duplicate-Finder-Maven-Plugin </ArtifactId> </tugin> </glugins> </strato>
Para otras propiedades, hemos establecido valores predeterminados como se enumeran en la documentación del complemento.
Puede anularlos fácilmente, pero establecer el valor de la propiedad seleccionada con prefijo con duplicate-finder-maven-plugin
. Por ejemplo, establezca duplicate-finder-maven-plugin.skip
a true
para omitir la verificación de duplicados en su compilación.
Si necesita agregar ignoredClassPatterns
o ignoredResourcePatterns
a su configuración, asegúrese de agregarlos en la sección de configuración del complemento de su proyecto:
<11 construidos> <gotins> <Clugin> <MoupRId> org.basepom.maven </groupid> <ArFactId> Duplicate-Finder-Maven-Plugin </ArtifactId> <Configuración> <IgnoredClassPatns> <GnoredClassPatern> org.joda.time.base.BasedAtetime </IgnoredClassPattern> <IgnoredClassPathern>.*Module-Info </IgnoredClassPattern> </IgnoredClassPaterns> <IgnoredResourcePatherns> <GnoredResourcePatern> Changelog.txt </ignoredResourcePattern> </ignoredResourcePatherns> </figuration> </tugin> </glugins> </strato>