รุ่นรองล่าสุดของ Spring Cloud Sleuth คือ 3.1 คุณสามารถตรวจสอบสาขา 3.1.x สำหรับการกระทำล่าสุด
คำเตือน | ฤดูใบไม้ผลิคลาวด์สปริงจะไม่ทำงานกับสปริงบูต 3.x ต่อไป สปริงบูตรุ่นใหญ่ล่าสุดที่นักสืบจะรองรับคือ 2.x |
แกนกลางของโครงการนี้ถูกย้ายไปยังโครงการติดตามไมโครมิเตอร์และเครื่องมือวัดจะถูกย้ายไปยังไมโครมิเตอร์และโครงการทั้งหมดที่เกี่ยวข้อง (ไม่มีเครื่องมือทั้งหมดอีกต่อไปจะทำในที่เก็บเดียว
คุณสามารถตรวจสอบคู่มือการโยกย้ายไมโครมิเตอร์เพื่อเรียนรู้วิธีการโยกย้ายจากสปริงคลาวด์สปริงไปจนถึงการติดตามไมโครมิเตอร์
Spring Cloud Sleuth ให้การกำหนดค่าอัตโนมัติสำหรับการกำหนดค่าอัตโนมัติสำหรับการติดตามแบบกระจาย
นักสืบกำหนดค่าทุกสิ่งที่คุณต้องการเพื่อเริ่มต้น ซึ่งรวมถึงการรายงานข้อมูลการติดตาม (Spans) ไปยังจำนวนร่องรอยที่จะเก็บ (การสุ่มตัวอย่าง) หากมีการส่งฟิลด์ระยะไกล (สัมภาระ) และมีการติดตามห้องสมุดใด
เพิ่มสปริงคลาวด์สตัฟเข้ากับคลาสของแอปพลิเคชันสปริงบูต (พร้อมกับการใช้งาน tracer) และคุณจะเห็นรหัสติดตามในบันทึก ตัวอย่างของนักสืบด้วย Brave Tracer:
<!-สปริงคลาวด์สปริงต้องใช้สปริงเมฆ bom-> <การพึ่งพาการจัดการ>
<การพึ่งพา>
<การพึ่งพา>
<RoupID> org.springframework.cloud </groupId>
<ArtIfactId> Spring-Cloud-Dependencies </artifactid> <!-ให้รุ่นรถไฟสปริงคลาวด์ที่มีเสถียรภาพล่าสุด (เช่น 2020.0.0)-> <cersion> $ {release.train.version} </version>
<sype> POM </type>
<Scope> นำเข้า </cope>
</dermentency>
</dependencies>
</dermentencyManagement>
<การพึ่งพา> <!-การสนับสนุนเว็บของ Boot-> <การพึ่งพา>
<RoupID> org.springframework.boot </groupId>
<ArtIfactId> Spring-Boot-Starter-Web </artifactid>
</dermentency> <!-นักสืบด้วยการใช้งาน Brave Tracer-> <การพึ่งพา>
<RoupID> org.springframework.cloud </groupId>
<ArtIfactId> Spring-Cloud-Starter-Sleuth </artifactid>
</dermentency>
</dependencies>พิจารณาตัวจัดการ HTTP ต่อไปนี้:
@RestControllerPublic คลาส DeMocontroller {logger logger แบบคงที่ส่วนตัว = loggerFactory.getLogger (democontroller.class);@requestmapping ("/") สตริงสาธารณะที่บ้าน () {log.info ("Handling Home"); กลับมา "Hello World";
-
- หากคุณเพิ่มตัวจัดการนั้นลงในคอนโทรลเลอร์คุณสามารถเห็นการโทรไปที่ home() ที่ถูกติดตามในบันทึก (สังเกต 0b6aaf642574edd3 IDS)
2020-10-21 12: 01: 16.285 ข้อมูล [, 0b6aaf642574edd3,0b6aaf642574edd3, จริง] 289589 --- [NIO-9000-Exec-1] Democontroller: จัดการบ้าน!
บันทึก | แทนที่จะบันทึกคำขอในตัวจัดการอย่างชัดเจนคุณสามารถตั้งค่า logging.level.org.springframework.web.servlet.DispatcherServlet=DEBUG |
บันทึก | ตั้งค่า spring.application.name=myService (เช่น) เพื่อดูชื่อบริการเช่นเดียวกับการติดตามและขยาย ID |
กรุณาเยี่ยมชมหน้าเอกสารเพื่ออ่านเพิ่มเติมเกี่ยวกับโครงการ
ในการสร้างแหล่งที่มาคุณจะต้องติดตั้ง JDK 1.8
Spring Cloud ใช้ Maven สำหรับกิจกรรมที่เกี่ยวข้องกับการสร้างส่วนใหญ่และคุณควรจะสามารถลงจากพื้นได้อย่างรวดเร็วโดยการโคลนนิ่งโครงการที่คุณสนใจและพิมพ์
$ ./MVNW ติดตั้ง
บันทึก | นอกจากนี้คุณยังสามารถติดตั้ง 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) ติดตั้งและทำงาน
โมดูล Spring-Cloud-Build มีโปรไฟล์ "เอกสาร" และหากคุณเปิดมันจะพยายามสร้างแหล่ง ASCIIDOC จาก src/main/asciidoc เป็นส่วนหนึ่งของกระบวนการนั้นมันจะมองหา README.adoc และประมวลผลโดยการโหลดทั้งหมดรวม แต่ไม่แยกวิเคราะห์หรือแสดงผลเพียงแค่คัดลอกไปที่ ${main.basedir} ${basedir} ของโครงการ) หากมีการเปลี่ยนแปลงใด ๆ ใน readMe มันจะปรากฏขึ้นหลังจากการสร้าง maven เป็นไฟล์ที่แก้ไขในสถานที่ที่ถูกต้อง เพียงแค่กระทำและผลักดันการเปลี่ยนแปลง
หากคุณไม่มีการตั้งค่า IDE เราขอแนะนำให้คุณใช้ชุดสปริงเครื่องมือหรือคราสเมื่อทำงานกับรหัส เราใช้ปลั๊กอิน m2eclipse eclipse สำหรับการสนับสนุน Maven IDEs และเครื่องมืออื่น ๆ ควรทำงานได้โดยไม่มีปัญหาตราบใดที่พวกเขาใช้ Maven 3.3.3 หรือดีกว่า
โครงการคลาวด์ฤดูใบไม้ผลิต้องการโปรไฟล์ 'ฤดูใบไม้ผลิ' ที่จะเปิดใช้งานเพื่อแก้ไขปัญหาเหตุการณ์สำคัญของฤดูใบไม้ผลิและที่เก็บสแน็ปช็อต ใช้ IDE ที่คุณต้องการเพื่อตั้งค่าโปรไฟล์นี้ให้ทำงานหรือคุณอาจพบกับการสร้างข้อผิดพลาด
เราขอแนะนำปลั๊กอิน m2eclipse eclipse เมื่อทำงานกับ eclipse หากคุณยังไม่ได้ติดตั้ง M2eclipse อยู่แล้วก็มีให้บริการจาก "Eclipse Marketplace"
บันทึก | M2E รุ่นเก่าไม่สนับสนุน Maven 3.3 ดังนั้นเมื่อโครงการนำเข้าสู่ Eclipse คุณจะต้องบอก M2Eclipse ให้ใช้โปรไฟล์ที่เหมาะสมสำหรับโครงการ หากคุณเห็นข้อผิดพลาดที่แตกต่างกันมากมายที่เกี่ยวข้องกับ POMS ในโครงการตรวจสอบว่าคุณมีการติดตั้งที่ทันสมัย หากคุณไม่สามารถอัพเกรด M2E ให้เพิ่มโปรไฟล์ "สปริง" ลงใน settings.xml ของคุณ xml หรือคุณสามารถคัดลอกการตั้งค่าที่เก็บจากโปรไฟล์ "ฤดูใบไม้ผลิ" ของ PART POM ลงใน settings.xml ของคุณ xml |
หากคุณไม่ต้องการใช้ M2ECLIPSE คุณสามารถสร้างข้อมูลเมตาของโครงการ Eclipse โดยใช้คำสั่งต่อไปนี้:
$ ./MVNW ECLIPSE: ECLIPSE
โครงการ Eclipse ที่สร้างขึ้นสามารถนำเข้าได้โดยเลือก import existing projects จากเมนู file
Spring Cloud ได้รับการปล่อยตัวภายใต้ใบอนุญาต Apache 2.0 ที่ไม่ จำกัด และปฏิบัติตามกระบวนการพัฒนา GitHub มาตรฐานโดยใช้ GitHub Tracker สำหรับปัญหาและการรวมคำขอดึงเข้ามาใน Master หากคุณต้องการมีส่วนร่วมแม้กระทั่งบางสิ่งบางอย่างเล็กน้อยโปรดอย่าลังเล แต่ทำตามแนวทางด้านล่าง
ก่อนที่เราจะยอมรับแพตช์ที่ไม่สำคัญหรือคำขอดึงเราจะต้องให้คุณลงนามในข้อตกลงใบอนุญาตผู้สนับสนุน การลงนามในข้อตกลงของผู้สนับสนุนไม่ได้ให้สิทธิ์ใครก็ตามที่ให้สิทธิ์แก่ที่เก็บหลัก แต่หมายความว่าเราสามารถยอมรับการมีส่วนร่วมของคุณและคุณจะได้รับเครดิตผู้เขียนหากเราทำ ผู้มีส่วนร่วมที่ใช้งานอาจถูกขอให้เข้าร่วมทีมหลักและให้ความสามารถในการรวมคำขอดึง
โครงการนี้ปฏิบัติตามจรรยาบรรณผู้สนับสนุน โดยการเข้าร่วมคุณคาดว่าจะสนับสนุนรหัสนี้ โปรดรายงานพฤติกรรมที่ยอมรับไม่ได้กับ [email protected]
สิ่งเหล่านี้ไม่จำเป็นสำหรับการร้องขอการดึง แต่พวกเขาทั้งหมดจะช่วย พวกเขายังสามารถเพิ่มได้หลังจากคำขอดึงเดิม แต่ก่อนที่จะผสาน
ใช้การประชุมรูปแบบรหัสสปริงเฟรมเวิร์ก หากคุณใช้ Eclipse คุณสามารถนำเข้าการตั้งค่าฟอร์แมตโดยใช้ไฟล์ eclipse-code-formatter.xml จากโครงการสร้างคลาวด์สปริง หากใช้ Intellij คุณสามารถใช้ปลั๊กอิน Formatter รหัส Eclipse เพื่อนำเข้าไฟล์เดียวกัน
ตรวจสอบให้แน่ใจว่าไฟล์ .java ใหม่ทั้งหมดมีความคิดเห็นคลาส javadoc อย่างน้อยที่มีแท็ก @author อย่างน้อยก็ระบุตัวคุณและอย่างน้อยก็เป็นย่อหน้าเกี่ยวกับสิ่งที่คลาสมีไว้สำหรับ
เพิ่มความคิดเห็นส่วนหัวของใบอนุญาต ASF ไปยังไฟล์ .java ใหม่ทั้งหมด (คัดลอกจากไฟล์ที่มีอยู่ในโครงการ)
เพิ่มตัวเองเป็น @author ไปยังไฟล์. java ที่คุณแก้ไขอย่างมีนัยสำคัญ (มากกว่าการเปลี่ยนแปลงเครื่องสำอาง)
เพิ่ม Javadocs บางส่วนและหากคุณเปลี่ยนเนมสเปซองค์ประกอบ DOC XSD บางองค์ประกอบ
การทดสอบสองสามหน่วยจะช่วยได้มากเช่นกัน - มีคนต้องทำ
หากไม่มีใครใช้สาขาของคุณโปรดรีคืนกับอาจารย์ปัจจุบัน (หรือสาขาเป้าหมายอื่น ๆ ในโครงการหลัก)
เมื่อเขียนข้อความ commit โปรดติดตามการประชุมเหล่านี้หากคุณกำลังแก้ไขปัญหาที่มีอยู่โปรดเพิ่ม Fixes gh-XXXX ในตอนท้ายของข้อความ commit (โดยที่ XXXX เป็นหมายเลขปัญหา)
Spring Cloud Build มาพร้อมกับชุดของกฎการตรวจสอบ คุณสามารถค้นหาได้ในโมดูล spring-cloud-build-tools ไฟล์ที่โดดเด่นที่สุดภายใต้โมดูลคือ:
สปริงคลาวด์-บิวทูลส์/
└── SRC
├── CheckStyle
│──ตรวจสอบสไตล์ suppressions.xml (3)
└──หลัก
└──ทรัพยากร
├ดุ checkstyle-header.txt (2)
└ดุ checkstyle.xml (1)กฎ checkstyle เริ่มต้น
การตั้งค่าส่วนหัวไฟล์
กฎการปราบปรามเริ่มต้น
กฎ checkstyle ถูก ปิดใช้งานโดยค่าเริ่มต้น ในการเพิ่ม 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> จริง
</maven-checkstyle-plugin.includetestsourcedirectory> (3) </premerties>
<uffle>
<ปลั๊กอิน>
<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>
</ปลั๊กอิน>
</ปลั๊กอิน>
</การรายงาน>
</build>ล้มเหลวในการสร้างข้อผิดพลาดในการตรวจสอบ
ล้มเหลวในการละเมิดการสร้างแบบตรวจสอบ
การวิเคราะห์รูปแบบการตรวจสอบยังเป็นแหล่งทดสอบ
เพิ่มปลั๊กอินรูปแบบสปริงจาวาที่จะฟอร์แมตรหัสของคุณเพื่อส่งผ่านกฎการจัดรูปแบบ checkstyle ส่วนใหญ่
เพิ่มปลั๊กอิน CheckStyle ลงในขั้นตอนการสร้างและการรายงานของคุณ
หากคุณต้องการปราบปรามกฎบางอย่าง (เช่นความยาวบรรทัดต้องยาวขึ้น) ก็เพียงพอแล้วสำหรับคุณที่จะกำหนดไฟล์ภายใต้ ${project.root}/src/checkstyle/checkstyle-suppressions.xml ด้วยการระงับของคุณ ตัวอย่าง:
projectroot/src/checkstyle/checkstyle-suppresions.xml
<? xml version = "1.0"?> <! Doctype ปราบปรามสาธารณะ "-// ลูกสุนัขคลาน // dtd suppressions 1.1 // en" "https://www.puppycrawl.com/dtds/suppressions_1_1.dtd">> <การปราบปราม> <ยับยั้งไฟล์ = ".*configserverapplication.java" checks = "hideutilityclassConstructor"/> <ยับยั้งไฟล์ = ".*configclientwatch.java" checks = "linelengthcheck"/> </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 Build
สปริงคลาวด์-บิวทูลส์/
└── SRC
├── CheckStyle
│──ตรวจสอบสไตล์ suppressions.xml (3)
└──หลัก
└──ทรัพยากร
├ดุ checkstyle-header.txt (2)
├ดุ checkstyle.xml (1)
└── Intellij
├── Intellij_project_defaults.xml (4)
└── Intellij_spring_boot_java_conventions.xml (5)กฎ checkstyle เริ่มต้น
การตั้งค่าส่วนหัวไฟล์
กฎการปราบปรามเริ่มต้น
ค่าเริ่มต้นโครงการสำหรับ 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
CheckStyle
หากต้องการให้ 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's, spring-cloud-build-tools/src/main/resources/checkstyle-header.txt ทั้งใน repo โคลนของคุณหรือผ่านทาง 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 ทั้งใน repo โคลนของคุณหรือผ่านทาง 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 ClassPath
Finder ซ้ำ เปิดใช้งานโดยค่าเริ่มต้น และจะทำงานในขั้นตอน verify ของการสร้าง Maven ของคุณ แต่มันจะมีผลในโครงการของคุณหากคุณเพิ่ม duplicate-finder-maven-plugin ไปยังส่วน build ของ pom.xml ของ projecst
pom.xml
<uffle>
<ปลั๊กอิน>
<ปลั๊กอิน>
<RoupID> org.basepom.maven </roupId>
<ArtIfactId> Duplicate-Finder-Maven-Plugin </artifactId>
</ปลั๊กอิน>
</ปลั๊กอิน>
</build>สำหรับคุณสมบัติอื่น ๆ เราได้ตั้งค่าเริ่มต้นตามที่ระบุไว้ในเอกสารประกอบปลั๊กอิน
คุณสามารถแทนที่ได้อย่างง่ายดาย แต่การตั้งค่าของคุณสมบัติที่เลือกไว้ล่วงหน้าด้วยคำนำหน้าด้วย duplicate-finder-maven-plugin ตัวอย่างเช่นตั้งค่า duplicate-finder-maven-plugin.skip เป็น true เพื่อข้ามการทำซ้ำตรวจสอบในบิลด์ของคุณ
หากคุณต้องการเพิ่ม ignoredClassPatterns หรือ ignoredResourcePatterns ในการตั้งค่าของคุณตรวจสอบให้แน่ใจว่าได้เพิ่มในส่วนการกำหนดค่าปลั๊กอินของโครงการของคุณ:
<uffle>
<ปลั๊กอิน>
<ปลั๊กอิน>
<GroupId> org.basepom.maven </groupId>
<ArtIfactId> Duplicate-Finder-Maven-Plugin </artifactId>
<การกำหนดค่า>
<ensedoredClassPatterns>
<SignoredClassPattern> org.joda.time.base.basedatetime </engentoredclasspattern>
<SisperoredClassPattern>.*Module-info </engentoredClassPattern>
</sidsoredClassPatterns>
<ensedoredResourcePatterns>
<EnveroredResourcePattern> changelog.txt </entervedResourcePattern>
</sidentResourcePatterns>
</การกำหนดค่า>
</ปลั๊กอิน>
</ปลั๊กอิน>
</build>