Spring Cloud Sleuth의 마지막 마이너 버전은 3.1입니다. 3.1.x 지점에서 최신 커밋을 확인할 수 있습니다.
경고 | Spring Cloud Sleuth는 Spring Boot 3.x에서 작동하지 않습니다. Sleuth가 지원할 Spring Boot의 마지막 주요 버전은 2.x입니다. |
이 프로젝트의 핵심은 마이크로 미터 추적 프로젝트로 옮겨졌으며 계측은 마이크로 미터로 옮겨 질 것이며 각각의 모든 프로젝트 (더 이상 모든 계측이 단일 저장소에서 수행되지는 않습니다.
마이크로 미터 추적 마이그레이션 가이드를 확인하여 스프링 클라우드 Sleuth에서 마이크로 미터 추적으로 마이그레이션하는 방법을 배울 수 있습니다.
Spring Cloud Sleuth는 분산 추적을위한 Spring Boot 자동 구성을 제공합니다.
Sleuth는 시작하는 데 필요한 모든 것을 구성합니다. 여기에는 트레이스 데이터 (SPAN)가보고되는 경우, 보관할 추적 수 (샘플링), 원격 필드 (수하물)가 전송 된 경우 및 라이브러리가 추적되는 경우가 포함됩니다.
스프링 부팅 응용 프로그램의 클래스 경로 (트레이서 구현과 함께)에 Spring Cloud Sleuth를 추가하면 로그에 추적 ID가 표시됩니다. 용감한 추적자와 함께 Sleuth의 예 :
<! -Spring Cloud Sleuth는 스프링 클라우드 bom을 필요로합니다-> <fectencemanagement>
<의존성>
<의존성>
<groupid> org.springframework.cloud </groupid>
<아티팩트> 스프링 클라우드-의존성 </artifactid> <!-최신 안정적인 스프링 클라우드 릴리스 트레인 버전 (예 : 2020.0.0)-> <버전> $ {release.train.version} </version>
<type> pom </type>
<Scope> 가져 오기 </scope>
</의존성>
</의존성>
</의존성 관리>
<의존성> <!-Boot의 웹 지원-> <pectionency>
<groupid> org.springframework.boot </groupid>
<artifactid> 스프링 부트 스타터 -web </artifactid>
</의존성> <!-용감한 트레이서 구현을 가진 sleuth-> <pectionency>
<groupid> org.springframework.cloud </groupid>
<artifactid> Spring-Cloud-Starter-Sleuth </artifactid>
</의존성>
</의존성>다음 HTTP 처리기를 고려하십시오.
@RestControllerPublic 클래스 DemoController {private static logger log = loggerfactory.getLogger (democonTroller.class);@requestMapping ( "/") public String home () {log.info ( "hally home"); "hello world";
}
} 해당 핸들러를 컨트롤러에 추가하면 로그에서 home() 에 대한 통화가 추적되는 것을 볼 수 있습니다 ( 0b6aaf642574edd3 IDS 참조).
2020-10-21 12 : 01 : 16.285 정보 [, 0B6AAF642574EDD3,0B6AAF642574EDD3, TRUE] 289589 --- [NIO-9000-EXEC-1] DEMOCONTROLLER : HOME HOME!
메모 | 핸들러에서 요청을 명시 적으로 기록하는 대신 logging.level.org.springframework.web.servlet.DispatcherServlet=DEBUG 설정할 수 있습니다. |
메모 | spring.application.name=myService (예 :)를 설정하여 서비스 이름과 추적 및 스팬 ID를 볼 수 있습니다. |
프로젝트에 대한 자세한 내용은 문서 페이지를 방문하십시오.
소스를 구축하려면 JDK 1.8을 설치해야합니다.
Spring Cloud는 대부분의 빌드 관련 활동에 Maven을 사용하며, 관심있는 프로젝트를 복제하고 타이핑하여 매우 빠르게 벗어날 수 있어야합니다.
$ ./mvnw 설치
메모 | Maven (> = 3.3.3)을 직접 설치하고 아래 예제에서 ./mvnw 대신에 mvn 명령을 실행할 수도 있습니다. 그렇게하면 로컬 Maven 설정에 스프링 프리 릴리스 아티팩트에 대한 저장소 선언이 포함되어 있지 않으면 -P spring 추가해야 할 수도 있습니다. |
메모 | -Xmx512m -XX:MaxPermSize=128m 과 같은 값으로 MAVEN_OPTS 환경 변수를 설정하여 Maven이 이용할 수있는 메모리의 양을 늘려야 할 수도 있습니다. 우리는 이것을 .mvn 구성에서이를 다루려고 노력하므로 빌드를 성공시키기 위해해야한다면 소스 제어에 설정을 추가 할 수있는 티켓을 올리십시오. |
테스트를 위해 미들웨어 (예 : Redis)가 필요한 프로젝트는 일반적으로 [docker] (https://www.docker.com/get-started)의 로컬 인스턴스가 설치되어 실행되도록 요구합니다.
Spring-Cloud-Build 모듈에는 "문서"프로파일이 있으며, 전환하면 src/main/asciidoc 에서 Asciidoc 소스를 구축하려고합니다. 이 과정의 일부로 README.adoc 을 찾고 모든 포함을로드하거나 구문 분석하지 않으면 ${main.basedir} (기본값으로 ${basedir} , 즉 루트에 복사하여 처리하여 처리합니다. 프로젝트의). README에 변경 사항이 있으면 Maven 빌드 후 올바른 위치에서 수정 된 파일로 표시됩니다. 그냥 저지르고 변화를 밀어 넣으십시오.
IDE 기본 설정이없는 경우 코드 작업을 수행 할 때 Spring Tools Suite 또는 Eclipse를 사용하는 것이 좋습니다. Maven 지원을 위해 M2Eclipse Eclipse 플러그인을 사용합니다. 다른 IDE와 도구는 Maven 3.3.3 이상을 사용하는 한 문제없이 작동해야합니다.
Spring Cloud Project는 스프링 이정표 및 스냅 샷 저장소를 해결하기 위해 'Spring'Maven 프로파일을 활성화해야합니다. 선호하는 IDE를 사용 하여이 프로파일을 활성화하도록 설정하거나 빌드 오류가 발생할 수 있습니다.
Eclipse로 작업 할 때 M2Eclipse Eclipse 플러그인을 권장합니다. M2Eclipse가 아직 설치되지 않은 경우 "Eclipse Marketplace"에서 사용할 수 있습니다.
메모 | 구형 버전의 M2E는 Maven 3.3을 지원하지 않으므로 프로젝트를 Eclipse로 가져 오면 M2Eclipse에 프로젝트에 올바른 프로필을 사용하도록 지시해야합니다. 프로젝트의 POM과 관련된 다양한 오류가 표시되면 최신 설치가 있는지 확인하십시오. M2E를 업그레이드 할 수없는 경우 settings.xml 에 "스프링"프로필을 추가하십시오. 또는 상위 POM의 "스프링"프로파일에서 저장소 설정을 settings.xml 로 복사 할 수 있습니다. |
m2eclipse를 사용하지 않으려면 다음 명령을 사용하여 Eclipse Project 메타 데이터를 생성 할 수 있습니다.
$ ./mvnw Eclipse : Eclipse
생성 된 일식 프로젝트는 file 메뉴에서 import existing projects 선택하여 가져올 수 있습니다.
Spring Cloud는 비 제한성 Apache 2.0 라이센스에 따라 릴리스되며 Github 트래커를 사용하여 문제를 해결하고 풀 요청을 마스터로 병합하는 매우 표준 Github 개발 프로세스를 따릅니다. 사소한 것을 기여하고 싶다면 주저하지 말고 아래 지침을 따르십시오.
사소한 패치 또는 풀 요청을 수락하기 전에 기고자 라이센스 계약에 서명해야합니다. 기고자의 계약에 서명한다고해서 다른 사람은 메인 리포지토리에 대한 권리를 저지르는 것은 아니지만, 귀하의 기부금을 수락 할 수 있으며, 귀하는 저자 신용을 받게됩니다. 적극적인 기고자는 핵심 팀에 합류하도록 요청받을 수 있으며 풀 요청을 병합 할 수 있습니다.
이 프로젝트는 기고자 언약 행동 강령을 준수합니다. 참여 함으로써이 코드를지지해야합니다. 용납 할 수없는 행동을 [email protected] 에보 고하십시오.
이 중 어느 것도 풀 요청에 필수적이지는 않지만 모두 도움이 될 것입니다. 원래 풀 요청 후에는 병합 전에 추가 할 수 있습니다.
스프링 프레임 워크 코드 형식 규칙을 사용하십시오. Eclipse를 사용하는 경우 Spring Cloud 빌드 프로젝트에서 eclipse-code-formatter.xml 파일을 사용하여 Formatter 설정을 가져올 수 있습니다. Intellij를 사용하는 경우 Eclipse Code Formatter 플러그인을 사용하여 동일한 파일을 가져올 수 있습니다.
모든 새로운 .java 파일에 적어도 @author 태그가 귀하를 식별하는 간단한 Javadoc 클래스 댓글을 갖도록하고, 클래스가 무엇인지에 대한 최소한 단락을 사용하십시오.
모든 새로운 .java 파일에 ASF 라이센스 헤더 댓글 추가 (프로젝트의 기존 파일에서 복사)
실질적으로 수정하는 .java 파일에 @author 로 자신을 추가하십시오 (미용 변경 이상).
Javadoc을 추가하고 네임 스페이스를 변경하면 일부 XSD 문서 요소를 변경하십시오.
몇 가지 단위 테스트도 많은 도움이 될 것입니다. 누군가가해야합니다.
아무도 다른 사람이 당신의 지점을 사용하지 않는다면, 현재 마스터 (또는 기본 프로젝트의 다른 대상 지점)에 대해 다시 비제하십시오.
커밋 메시지를 작성할 때이 컨벤션을 따르십시오. 기존 문제를 해결하는 경우 커밋 메시지가 끝날 때 Fixes gh-XXXX 추가하십시오 (여기서 XXXX는 문제 번호입니다).
스프링 클라우드 빌드에는 일련의 체크 스타일 규칙이 제공됩니다. spring-cloud-build-tools 모듈에서 찾을 수 있습니다. 모듈에서 가장 주목할만한 파일은 다음과 같습니다.
Spring-Cloud-Build-Tools/
SRC
CHECKSTYLE
CHECKSTYLE-SUPPRESSIONS.XML (3)
∎ 메인
∎ 자원
CHECKSTYLE-HEADER.TXT (2)
└ ─) checkstyle.xml (1)기본 체크 스타일 규칙
파일 헤더 설정
기본 억제 규칙
CheckStyle 규칙은 기본적으로 비활성화 됩니다. 프로젝트에 CheckStyle을 추가하려면 다음 속성과 플러그인을 정의하십시오.
pom.xml
<속성>
<Maven-checkstyle-plugin.failsonerror> true </maven-checkstyle-plugin.failsonerror> (1) <maven-checkstyle-plugin.failsonviolation> true
<
</maven-checkstyle-plugin.includeTestSourcedirectory> (3) </properties>
<빌드>
<플러그인>
<Plugin> (4) <GroupId> io.spring.javaformat </groupid>
<artifactid> Spring-Javaformat-Maven-Plugin </artifactid>
</플러그인>
<Plugin> (5) <GroupId> org.apache.maven.plugins </groupid>
<artifactid> Maven-Checkstyle-Plugin </artifactid>
</플러그인>
</플러그인>
<보고>
<플러그인>
<Plugin> (5) <GroupId> org.apache.maven.plugins </groupid>
<artifactid> Maven-Checkstyle-Plugin </artifactid>
</플러그인>
</플러그인>
</보고>
</빌드>체크 스타일 오류에 대한 빌드에 실패합니다
체크 스타일 위반에 대한 구축에 실패합니다
CheckStyle은 테스트 소스도 분석합니다
코드를 재구성하여 대부분의 체크 스타일 형식 형식 규칙을 전달하도록 코드를 재구성하는 Spring Java 형식 플러그인 추가
체크 스타일 플러그인을 빌드 및보고 단계에 추가하십시오
규칙을 억제 해야하는 경우 (예 : 줄 길이가 길어야 함) ${project.root}/src/checkstyle/checkstyle-suppressions.xml 아래에서 파일을 정의하기에 충분합니다. 예:
Projectroot/SRC/CheckStyle/CheckStyle-Suppresions.xml
<? xml 버전 = "1.0"?> <! doctype 억제 공개 "-// 강아지 크롤링 // dtd 억제 1.1 // en" "https://www.puppycrawl.com/dtds/suppressions_1_1.dtd"> <억제> <files = " <files = " </suppressions>
${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 빌드 프로젝트에서 찾을 수 있습니다.
Spring-Cloud-Build-Tools/
SRC
CHECKSTYLE
CHECKSTYLE-SUPPRESSIONS.XML (3)
∎ 메인
∎ 자원
CHECKSTYLE-HEADER.TXT (2)
├ ─) checkstyle.xml (1)
└ ─) Intellij
├ --) Intellij_Project_defaults.xml (4)
└ ── 텔리 지 _spring_boot_java_conventions.xml (5)기본 체크 스타일 규칙
파일 헤더 설정
기본 억제 규칙
대부분의 CheckStyle 규칙을 적용하는 Intellij의 프로젝트 기본값
대부분의 CheckStyle 규칙을 적용하는 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 플러그인을 설치해야합니다. Junit Assertions를 자동으로 변환하기 위해 Assertions2Assertj 를 설치하는 것이 좋습니다.
File → Settings → Other settings → Checkstyle 로 이동하십시오. Configuration file 섹션에서 + 아이콘을 클릭하십시오. 그곳에서 체크 스타일 규칙을 선택 해야하는 위치를 정의해야합니다. 위의 이미지에서 복제 된 스프링 클라우드 빌드 저장소에서 규칙을 선택했습니다. 그러나 Spring Cloud Build의 Github 저장소 (예 : 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 's, 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 입니다.
중요한 | 생산 및 테스트 소스에 체크 스타일 규칙을 적용하므로 All sources 에 Scan Scope 설정해야합니다. |
Spring Cloud Build는 basepom:duplicate-finder-maven-plugin 제공하여 Java ClassPath에서 중복 및 충돌하는 클래스 및 리소스를 표시 할 수 있습니다.
중복 파인더는 기본적으로 활성화되어 있으며 Maven 빌드의 verify 단계에서 실행되지만 Projecst의 pom.xml 의 build 섹션에 duplicate-finder-maven-plugin 추가하는 경우 프로젝트에서만 적용됩니다.
pom.xml
<빌드>
<플러그인>
<플러그인>
<groupid> org.basepom.maven </groupid>
<artifactid> Duplicate-Finder-Maven-Plugin </artifactid>
</플러그인>
</플러그인>
</빌드>다른 속성의 경우 플러그인 문서에 나열된 기본값을 설정했습니다.
쉽게 재정의 할 수 있지만 duplicate-finder-maven-plugin 으로 접두사가있는 선택된 속성의 값을 설정할 수 있습니다. 예를 들어, 빌드에서 중복 체크를 건너 뛰기 위해 duplicate-finder-maven-plugin.skip true 로 설정하십시오.
설정에 ignoredClassPatterns 하거나 ignoredResourcePatterns 추가 해야하는 경우 프로젝트의 플러그인 구성 섹션에 추가하십시오.
<빌드>
<플러그인>
<플러그인>
<groupid> org.basepom.maven </groupid>
<artifactid> Duplicate-Finder-Maven-Plugin </artifactid>
<구성>
<무시 당장>
<incigoredclasspattern> org.joda.time.base.baseateTime </ridoredclasspattern>
<heigoredclasspattern>
</무시하고 classpatterns>
<무시 무시자>
<무시 무시한 changeLog.txt </무시한 resourcepattern>
</resourcepatterns>를 무시합니다>
</구성>
</플러그인>
</플러그인>
</빌드>