Последняя вторая версия Spring Cloud Sleuth - 3.1. Вы можете проверить филиал 3.1.x для последних коммитов.
Предупреждение | Spring Cloud Sleuth не будет работать с Spring Boot 3.x дальше. Последняя крупная версия Spring Boot, которую поддержит Sleuth, - 2.x. |
Ядро этого проекта была перенесена в проект по отслеживанию микрометра, и инструменты будут перенесены на микрометр и все соответствующие проекты (больше не будут выполняться все инструменты в одном хранилище.
Вы можете проверить руководство по миграции трассировки микрометра, чтобы узнать, как мигрировать от Spring Cloud Sleath в трассировку микрометра.
Spring Cloud Sleuth обеспечивает автоматическую конфигурацию Spring Boot для распределенной трассировки.
Sleuth настраивает все, что вам нужно, чтобы начать. Это включает в себя, где сообщается о данных трассировки (пролеты), сколько следы следует соблюдать (выборку), если отправляются удаленные поля (багаж) и какие библиотеки прослежены.
Добавьте Spring Cloud Sleath к классу приложения Spring Boot (вместе с реализацией Tracer), и вы увидите идентификаторы трассировки в журналах. Пример сылика с смелым трассером:
<!-Spring Cloud Sleuth требует весеннего облачного бом <зависимости> <Зависимость> <groupid> org.springframework.cloud </GroupId> <TrafactId> Spring-Cloud-зависимости </artifactid> <!-Предоставьте последнюю версию поезда по выпуску Cloud Spring Cloud (например, 2020.0.0)-> <sersion> $ {release.train.version} </version> <Тип> pom </type> <Scope> Импорт </scope> </Зависимость> </зависимости> </Зависимость управления> <зависимости> <!-веб-поддержка Boot-> <зависимость> <groupId> org.springframework.boot </GroupId> <Artifactid> Spring-Boot-Starter-Web </artifactid> </dependency> <!-Sleath с смелой реализацией Tracer-> <зависимость> <groupid> org.springframework.cloud </GroupId> <Artifactid> Spring-Cloud-Starter-sleuth </artifactid> </Зависимость> </зависимости>
Рассмотрим следующий Http Handler:
@RestControllerPublic Class DemoController {private Static Logger log = loggerFactory.getLogger (demoController.class);@requestMapping ("/") public String home () {log.info ("Обработка дома"); вернуть "Hello World"; } }
Если вы добавите этого обработчика в контроллер, вы увидите вызовы home()
прослеженные в журналах (обратите внимание на идентификаторы 0b6aaf642574edd3
).
2020-10-21 12: 01: 16.285 Информация [, 0b6aaf642574eddddddddd3,0b6aaf642574edd3, true] 289589 --- [Nio-9000-Exec-1] Демоконтроллер: обработка домой!
Примечание | Вместо того, чтобы регистрировать запрос в обработчике явно, вы можете установить logging.level.org.springframework.web.servlet.DispatcherServlet=DEBUG . |
Примечание | Установите spring.application.name=myService (например), чтобы увидеть имя службы, а также идентификаторы трассировки и SPAN. |
Пожалуйста, посетите страницу документации, чтобы узнать больше о проекте.
Чтобы построить источник, вам нужно будет установить JDK 1.8.
Spring Cloud использует Maven для большинства занятий, связанных с сборкой, и вы должны быть в состоянии довольно быстро выйти из земли, клонируя интересный вам проект, и печатать
$ ./mvnw install
Примечание | Вы также можете установить Maven (> = 3.3.3) самостоятельно и запустить команду mvn вместо ./mvnw в примерах ниже. Если вы это сделаете, вам также может понадобиться добавить -P spring , если ваши локальные настройки Maven не содержат деклараций репозитория для весенних артефактов перед выпуском. |
Примечание | Имейте в виду, что вам может потребоваться увеличить объем памяти, доступной для Maven, установив переменную среды MAVEN_OPTS со значением, например -Xmx512m -XX:MaxPermSize=128m . Мы стараемся осветить это в конфигурации .mvn , поэтому, если вы обнаружите, что вам нужно сделать это, чтобы добиться успеха, пожалуйста, поднимите билет, чтобы добавить настройки в управление источником. |
Проекты, которые требуют промежуточного программного обеспечения (т.е. Redis) для тестирования, обычно требуют, чтобы локальный экземпляр [Docker] (https://www.docker.com/get-Started) был установлен и запускается.
Модуль с пружинной облаком имеет профиль «документы», и если вы включите его на него, попытается построить источники Asciidoc из src/main/asciidoc
. В рамках этого процесса он будет искать README.adoc
и обработать его, загрузив все включение, но не анализируя и не отображая его, просто копируя его в ${main.basedir}
(по умолчанию ${basedir}
, то есть корень проекта). Если есть какие -либо изменения в Readme, он будет отображаться после сборки Maven в качестве модифицированного файла в правильном месте. Просто сделайте это и подтолкните изменения.
Если у вас нет предпочтения IDE, мы рекомендуем вам использовать Spring Tools Suite или Eclipse при работе с кодом. Мы используем плагин M2Eclipse Eclipse для поддержки Maven. Другие IDE и инструменты также должны работать без проблем, если они используют Maven 3.3.3 или лучше.
Проекты Spring Cloud требуют, чтобы профиль «Spring» Maven был активирован для разрешения репозитории Spring Filestone и Snapshot. Используйте свою предпочтительную IDE, чтобы установить этот профиль для активного, или вы можете испытать ошибки сборки.
Мы рекомендуем плагин M2Eclipse Eclipse при работе с Eclipse. Если у вас еще нет установки M2Eclipse, он доступен на «Рынке Eclipse».
Примечание | Старые версии M2E не поддерживают Maven 3.3, поэтому, как только проекты будут импортированы в Eclipse, вам также необходимо сообщить M2Eclipse использовать правильный профиль для проектов. Если вы видите много разных ошибок, связанных с POM в проектах, убедитесь, что у вас есть актуальная установка. Если вы не можете обновить M2E, добавьте профиль «Spring» в свои settings.xml . В качестве альтернативы вы можете скопировать настройки репозитория из профиля «пружины» родительского POM в свои settings.xml . |
Если вы предпочитаете не использовать M2Eclipse, вы можете генерировать метаданные проекта Eclipse, используя следующую команду:
$ ./mvnw Eclipse: Eclipse
Сгенерированные проекты Eclipse могут быть импортированы путем выбора import existing projects
из меню file
.
Spring Cloud выпускается по лицензии Apache 2.0 и следует очень стандартному процессу разработки Github, используя Github Tracker для проблем и объединение запросов на вытягивание в Master. Если вы хотите внести даже что -то тривиальное, пожалуйста, не стесняйтесь, но следуйте указаниям ниже.
Прежде чем мы примем нетривиальный патч или запрос на привлечение, нам понадобится подписать лицензионное соглашение о участнике. Подписание соглашения участника не дает никому совершать права на основной репозиторий, но это означает, что мы можем принять ваши взносы, и вы получите кредит автора, если мы это сделаем. Активных участников могут быть предложены присоединиться к основной команде, и с учетом возможности объединить запросы на тягу.
Этот проект придерживается Кодекса поведения завета участника. Участвуя, вы должны поддержать этот кодекс. Пожалуйста, сообщите о неприемлемое поведение в Spring-Code- [email protected].
Ничто из этого не является важным для запроса на притяжение, но все они помогут. Они также могут быть добавлены после исходного запроса на привлечение, но перед слиянием.
Используйте соглашения о формате кода Spring Framework. Если вы используете Eclipse, вы можете импортировать настройки форматера, используя файл eclipse-code-formatter.xml
из проекта Spring Cloud Build. Если вы используете IntelliJ, вы можете использовать плагин Formatter Code Eclipse для импорта одного и того же файла.
Убедитесь, что все новые файлы .java
имели простой комментарий класса Javadoc, по крайней мере, с идентифицированным тегом @author
, и предпочтительно, по крайней мере, абзаца о том, для чего нужен класс.
Добавьте комментарий заголовка лицензии ASF во все новые файлы .java
(копировать из существующих файлов в проекте)
Добавьте себя в качестве @author
в файлы .java, которые вы существенно изменяете (больше, чем косметические изменения).
Добавьте немного Javadocs и, если вы измените пространство имен, некоторые элементы документа XSD.
Несколько модульных тестов также очень помогут - кто -то должен это сделать.
Если никто другой не использует вашу филиал, пожалуйста, повторно его против текущего мастера (или другого целевого филиала в главном проекте).
При написании сообщения о коммите, пожалуйста, следуйте этим соглашениям, если вы решаете существующую проблему, добавьте Fixes gh-XXXX
в конце сообщения Commit (где XXXX является номером выпуска).
Spring Cloud Build поставляется с набором правил контроля. Вы можете найти их в модуле spring-cloud-build-tools
. Наиболее заметные файлы под модулем:
Спринг-клуба-кондиционеры/
└-- -src ├acksyle │ └acks-Supressions.xml (3) └ack Main Resources ├ack-stectyle header.txt (2) └ackstyle.xml (1)
Правила проверки по умолчанию
Настройка заголовка файла
Правила подавления по умолчанию
Правила контроля отключены по умолчанию . Чтобы добавить Checkstyle в ваш проект, просто определите следующие свойства и плагины.
Pom.xml
<свойства> <maven-checkstyle-plugin.failsonerror> true </maven-checkstyle-plugin.failsonerror> (1) <maven-checkstyle-plugin.failsonviolation> true </maven-checkstyle-plugin.failsonviolation> (2) <maven-checkstyle-plugin.includetestsourcedirectory> true </maven-checkstyle-plugin.includetestsourcedirectory> (3) </свойства> <Build> <плагины> <плагин> (4) <groupid> io.spring.javaformat </GroupId> <Artifactid> Spring-Javaformat-Maven-Plugin </artifactid> </плагин> <плагин> (5) <groupid> org.apache.maven.plugins </GroupId> <Artifactid> maven-checkstyle-plugin </artifactid> </плагин> </плагины> <Reporting> <плагины> <плагин> (5) <groupid> org.apache.maven.plugins </GroupId> <Artifactid> maven-checkstyle-plugin </artifactid> </плагин> </плагины> </Reporting> </build>
Сбой настройки на ошибках по контролю
Терпит неудачу на нарушениях контроля
Checkstyle анализирует также источники тестирования
Добавить плагин Format Format Spring Java, который переформатирует ваш код, чтобы пройти большую часть правил форматирования контроля
Добавьте плагин Checkstyle на этапы сборки и отчетности
Если вам нужно подавить некоторые правила (например, длина строки должна быть длиннее), то вам достаточно определить файл под ${project.root}/src/checkstyle/checkstyle-suppressions.xml
с вашими подавлениями. Пример:
projectroot/src/checkstyle/checkstyle-suppresions.xml
<? XML версия = "1.0"?> <! Doctype Suppressions Public "-// Puppy Crawl // DTD подавление 1.1 // en" "https://www.puppycrawl.com/dtds/suppressions_1_1.dtd"> <подавления> <suppress files = ".*configserverApplication.java" checks = "hideutilityclassconstructor"/> <spistress files = ".*configclientwatch.java" checks = "linelengthCheck"/> </подавления>
Желательно скопировать ${spring-cloud-build.rootFolder}/.editorconfig
и ${spring-cloud-build.rootFolder}/.springformat
в ваш проект. Таким образом, будут применены некоторые правила форматирования по умолчанию. Вы можете сделать это, запустив этот сценарий:
$ curl https://raw.githubusercontent.com/spring-cloud/spring-cloud-build/3.1.x/.editorconfig -o .editorConfig $ touch .springformat
Чтобы настроить IntelliJ, вы должны импортировать наши соглашения о кодировании, профили проверки и настроить плагин Checkstyle. Следующие файлы можно найти в проекте Spring Cloud Build.
Спринг-клуба-кондиционеры/
└-- -src ├acksyle │ └acks-Supressions.xml (3) └ack Main Resources ├ack-stectyle header.txt (2) ├ackstyle.xml (1) └ack Intellij ├ack Intellij_project_defaults.xml (4) └ack intellij_spring_boot_java_conventions.xml (5)
Правила проверки по умолчанию
Настройка заголовка файла
Правила подавления по умолчанию
Проект по умолчанию для IntelliJ, которые применяют большинство правил контроля
Конвенции в стиле проекта для IntelliJ, которые применяют большинство правил контроля
Рисунок 1. Стиль кода
Перейдите в File
→ Settings
→ Editor
→ Code style
. Нажмите на значок рядом с разделом Scheme
. Там нажмите «Значение Import Scheme
и выберите параметр Intellij IDEA code style XML
. Импортируйте spring-cloud-build-tools/src/main/resources/intellij/Intellij_Spring_Boot_Java_Conventions.xml
.
Рисунок 2. Профили проверки
Перейдите в File
→ Settings
→ Editor
→ Inspections
. Нажмите на значок рядом с разделом Profile
. Там нажмите на Import Profile
и импортируйте spring-cloud-build-tools/src/main/resources/intellij/Intellij_Project_Defaults.xml
.
Контроль
Чтобы IntelliJ работал с Checkstyle, вы должны установить плагин Checkstyle
. Желательно также установить Assertions2Assertj
для автоматического преобразования утверждений JUNIT
Перейдите в File
→ Settings
→ Other settings
→ Checkstyle
. Нажмите на значок +
в разделе Configuration file
. Там вам придется определить, откуда должны быть выбраны правила контроля. На изображении выше мы выбрали правила из репозитория клонированной пружинной облачной сборки. Тем не менее, вы можете указать на репозиторий Github Spring Cloud Build (например, для checkstyle.xml
: https://raw.githubusercontent.com/spring-cloud/spring-cloud-build/3.1.x/spring-cloud-build-tools/src/main/resources/checkstyle.xml
). Нам нужно предоставить следующие переменные:
checkstyle.header.file
-пожалуйста, укажите на него на пружинный облако сборки, spring-cloud-build-tools/src/main/resources/checkstyle-header.txt
либо в вашем клонированном репо, либо через 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
- Подавление по умолчанию. Пожалуйста, укажите на это на весенние облачные сборки, spring-cloud-build-tools/src/checkstyle/checkstyle-suppressions.xml
файл либо в вашем клонированном репо, либо через 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
- Эта переменная соответствует подавлению в вашем локальном проекте. Например, вы работаете над spring-cloud-contract
. Затем укажите на папку project-root/src/checkstyle/checkstyle-suppressions.xml
. Примером для spring-cloud-contract
будет: /home/username/spring-cloud-contract/src/checkstyle/checkstyle-suppressions.xml
.
Важный | Не забудьте установить Scan Scope для All sources так как мы применяем правила проверки для производства и источников тестирования. |
Spring Cloud Build приводит вдоль basepom:duplicate-finder-maven-plugin
, который позволяет отметить дубликаты и противоречивые классы и ресурсы на классной дороге Java.
Duplicate Finder включен по умолчанию и будет работать на этапе verify
вашей сборки Maven, но он вступит в силу только в вашем проекте только в том случае, если вы добавите duplicate-finder-maven-plugin
в раздел build
pom.xml
Projecst.
Pom.xml
<Build> <плагины> <плагин> <groupid> org.basepom.maven </GroupId> <Artifactid> дубликат-финдер-maven-plugin </artifactid> </плагин> </плагины> </build>
Для других свойств мы установили значения по умолчанию, как указано в документации плагина.
Вы можете легко переопределить их, но установить значение выбранного свойства, префиксированного duplicate-finder-maven-plugin
. Например, установите duplicate-finder-maven-plugin.skip
в true
, чтобы пропустить Duplicates, проверьте свою сборку.
Если вам нужно добавить ignoredClassPatterns
или ignoredResourcePatterns
в вашей настройке, обязательно добавьте их в раздел конфигурации плагина вашего проекта:
<Build> <плагины> <плагин> <groupid> org.basepom.maven </GroupId> <Artifactid> дубликат-финдер-maven-plugin </artifactid> <Конфигурация> <Игнорируемый classpatterns> <IngenoredClasspattern> org.joda.time.base.basedateTime </игнорируемый classpattern> <INGUREDCLASSPATTERN>.*MODULE-INFO </игнорируемый classpattern> </игнорируемые classpatterns> <Игнорировалрезурцепттернс> <IgnoredResourcepattern> Changelog.txt </igenoredresourcepattern> </игнорированорезоуруппаттернс> </конфигурация> </плагин> </плагины> </build>