Versi minor terakhir Spring Cloud Sleuth adalah 3.1. Anda dapat memeriksa cabang 3.1.x untuk komit terbaru.
Peringatan | Spring Cloud Sleuth tidak akan bekerja dengan boot musim semi 3.x dan seterusnya. Versi utama terakhir dari Spring Boot yang akan didukung SLEUTH adalah 2.x. |
Inti dari proyek ini dipindahkan ke proyek penelusuran mikrometer dan instrumentasi akan dipindahkan ke mikrometer dan semua proyek masing -masing (tidak lagi semua instrumentasi akan dilakukan dalam satu repositori tunggal.
Anda dapat memeriksa Panduan Migrasi Penelusuran Mikrometer untuk mempelajari cara bermigrasi dari Spring Cloud Sleuth ke penelusuran mikrometer.
Spring Cloud Sleuth menyediakan konfigurasi otomatis boot musim semi untuk penelusuran terdistribusi.
Sleuth mengkonfigurasi semua yang Anda butuhkan untuk memulai. Ini termasuk di mana data jejak (rentang) dilaporkan, berapa banyak jejak yang harus disimpan (pengambilan sampel), jika bidang jarak jauh (bagasi) dikirim, dan perpustakaan mana yang dilacak.
Tambahkan Spring Cloud Sleuth ke Classpath dari Aplikasi Spring Boot (bersama dengan implementasi pelacak) dan Anda akan melihat ID jejak di log. Contoh Sleuth dengan Pelacak Berani:
<!-Spring Cloud Sleuth membutuhkan bom Spring Cloud-> <DepgergencyManagement> <Ketergantungan> <mendeken> <groupId> org.springframework.cloud </groupid> <ArTifactId> Spring-cloud-Dependencies </artifactId> <!-Berikan versi kereta api rilis Cloud Spring Cloud terbaru (mis. 2020.0.0)-> <version> $ {rilis.train.version} </versi> <ype> pom </ype> <scope> impor </opope> </dependency> </dependensi> </DependencyManagement> <Dependencies> <!-Dukungan web boot-> <dependency> <groupId> org.springframework.boot </groupid> <ArTifactid> Spring-boot-starter-web </stifactid> </Dependency> <!-Sleuth dengan Implementasi Pelacak Berani-> <dependency> <groupId> org.springframework.cloud </groupid> <ArTifactid> Spring-cloud-starter-lleuth </arttifactid> </dependency> </dependensi>
Pertimbangkan penangan HTTP berikut:
@RestControllerPublic kelas demokontroller {private static logger log = loggerFactory.getLogger (democontroller.class);@requestMapping ("/") home string publik () {log.info ("menangani rumah"); return "hello world"; } }
Jika Anda menambahkan pawang itu ke pengontrol, Anda dapat melihat panggilan ke home()
ditelusuri di log (perhatikan ID 0b6aaf642574edd3
).
2020-10-21 12: 01: 16.285 Info [, 0B6AAF642574EDD3,0B6AAF642574EDD3, Benar] 289589 --- [NIO-9000-Exec-1] Democontroller: Handling Home!
Catatan | Alih -alih mencatat permintaan di pawang secara eksplisit, Anda dapat mengatur logging.level.org.springframework.web.servlet.DispatcherServlet=DEBUG . |
Catatan | Atur spring.application.name=myService (misalnya) untuk melihat nama layanan serta jejak dan rentang id. |
Silakan kunjungi halaman dokumentasi untuk membaca lebih lanjut tentang proyek ini.
Untuk membangun sumber, Anda harus menginstal JDK 1.8.
Spring Cloud menggunakan Maven untuk sebagian besar aktivitas terkait build, dan Anda harus bisa turun dengan cepat dengan mengkloning proyek yang Anda minati dan mengetik
$ ./mvnw Instal
Catatan | Anda juga dapat menginstal maven (> = 3.3.3) sendiri dan menjalankan perintah mvn sebagai pengganti ./mvnw dalam contoh di bawah ini. Jika Anda melakukannya, Anda juga mungkin perlu menambahkan -P spring jika pengaturan Maven lokal Anda tidak berisi deklarasi repositori untuk artefak pra -pelepasan musim semi. |
Catatan | Ketahuilah bahwa Anda mungkin perlu meningkatkan jumlah memori yang tersedia untuk Maven dengan mengatur variabel lingkungan MAVEN_OPTS dengan nilai seperti -Xmx512m -XX:MaxPermSize=128m . Kami mencoba menutupi ini di konfigurasi .mvn , jadi jika Anda menemukan Anda harus melakukannya untuk membuat build berhasil, silakan angkat tiket untuk mendapatkan pengaturan yang ditambahkan ke kontrol sumber. |
Proyek-proyek yang membutuhkan Middleware (yaitu Redis) untuk pengujian umumnya mengharuskan contoh lokal [Docker] (https://www.docker.com/get-started) diinstal dan dijalankan.
Modul Spring-Cloud-Build memiliki profil "dokumen", dan jika Anda mengganti itu akan mencoba membangun sumber Asciidoc dari src/main/asciidoc
. Sebagai bagian dari proses itu, ia akan mencari README.adoc
dan memprosesnya dengan memuat semua yang termasuk, tetapi tidak memarsing atau merendernya, hanya menyalinnya ke ${main.basedir}
(default ke ${basedir}
, yaitu root root proyek). Jika ada perubahan dalam ReadMe, maka akan muncul setelah Maven build sebagai file yang dimodifikasi di tempat yang benar. Committer dan dorong perubahan.
Jika Anda tidak memiliki preferensi IDE, kami akan merekomendasikan agar Anda menggunakan Spring Tools Suite atau Eclipse saat bekerja dengan kode. Kami menggunakan plugin Eclipse M2Eclipse untuk dukungan Maven. IDE dan alat lainnya juga harus berfungsi tanpa masalah selama mereka menggunakan Maven 3.3.3 atau lebih baik.
Proyek Spring Cloud membutuhkan profil Maven 'Spring' untuk diaktifkan untuk menyelesaikan tonggak sejarah musim semi dan repositori snapshot. Gunakan IDE pilihan Anda untuk mengatur profil ini agar aktif, atau Anda mungkin mengalami kesalahan membangun.
Kami merekomendasikan plugin Eclipse M2Eclipse saat bekerja dengan Eclipse. Jika Anda belum menginstal M2Eclipse, itu tersedia dari "Eclipse Marketplace".
Catatan | Versi M2E yang lebih lama tidak mendukung Maven 3.3, jadi setelah proyek diimpor ke gerhana, Anda juga perlu memberi tahu M2Eclipse untuk menggunakan profil yang tepat untuk proyek. Jika Anda melihat banyak kesalahan berbeda terkait dengan POM di proyek, periksa apakah Anda memiliki instalasi terbaru. Jika Anda tidak dapat meningkatkan M2E, tambahkan profil "Spring" ke settings.xml Anda. Atau Anda dapat menyalin pengaturan repositori dari profil "pegas" dari pom induk ke dalam settings.xml Anda.xml. |
Jika Anda lebih suka tidak menggunakan m2eclipse, Anda dapat menghasilkan metadata proyek Eclipse menggunakan perintah berikut:
$ ./mvnw Eclipse: Eclipse
Proyek Eclipse yang dihasilkan dapat diimpor dengan memilih import existing projects
dari menu file
.
Spring Cloud dirilis di bawah lisensi APACHE 2.0 non-restriktif, dan mengikuti proses pengembangan GitHub yang sangat standar, menggunakan Github Tracker untuk masalah dan menggabungkan permintaan tarik menjadi master. Jika Anda ingin berkontribusi bahkan sesuatu yang sepele, jangan ragu, tetapi ikuti pedoman di bawah ini.
Sebelum kami menerima permintaan patch atau tarik non-sepele, kami akan membutuhkan Anda untuk menandatangani perjanjian lisensi kontributor. Menandatangani perjanjian kontributor tidak memberikan hak komit siapa pun atas repositori utama, tetapi itu berarti bahwa kami dapat menerima kontribusi Anda, dan Anda akan mendapatkan kredit penulis jika kami melakukannya. Kontributor aktif mungkin diminta untuk bergabung dengan tim inti, dan mengingat kemampuan untuk menggabungkan permintaan tarik.
Proyek ini mematuhi Kode Etik Kovenan Kontributor. Dengan berpartisipasi, Anda diharapkan untuk menegakkan kode ini. Harap laporkan perilaku yang tidak dapat diterima ke [email protected].
Tak satu pun dari ini yang penting untuk permintaan tarik, tetapi semuanya akan membantu. Mereka juga dapat ditambahkan setelah permintaan tarik asli tetapi sebelum penggabungan.
Gunakan konvensi format kode kerangka kerja Spring. Jika Anda menggunakan Eclipse, Anda dapat mengimpor pengaturan formatter menggunakan file eclipse-code-formatter.xml
dari Proyek Build Cloud Spring. Jika menggunakan IntelliJ, Anda dapat menggunakan plugin Eclipse Code Formatter untuk mengimpor file yang sama.
Pastikan semua file .java
baru untuk memiliki komentar kelas Javadoc sederhana dengan setidaknya tag @author
yang mengidentifikasi Anda, dan lebih disukai setidaknya paragraf tentang apa kelasnya.
Tambahkan komentar header lisensi ASF ke semua file .java
baru (salin dari file yang ada di proyek)
Tambahkan diri Anda sebagai @author
ke file .java yang Anda modifikasi secara substansial (lebih dari perubahan kosmetik).
Tambahkan beberapa Javadocs dan, jika Anda mengubah namespace, beberapa elemen dokumen XSD.
Beberapa tes unit juga akan membantu - seseorang harus melakukannya.
Jika tidak ada orang lain yang menggunakan cabang Anda, silakan rebase melawan master saat ini (atau cabang target lainnya di proyek utama).
Saat menulis pesan komit, silakan ikuti konvensi ini, jika Anda memperbaiki masalah yang ada, silakan tambahkan Fixes gh-XXXX
di akhir pesan komit (di mana XXXX adalah nomor masalah).
Spring Cloud Build hadir dengan serangkaian aturan checkstyle. Anda dapat menemukannya di modul spring-cloud-build-tools
. File yang paling terkenal di bawah modul adalah:
spring-cloud-build-tools/
└── src ├── Centang │ └── checkStyle-Suppressions.xml (3) └── Utama └── sumber daya ├── checkstyle-header.txt (2) └── checkstyle.xml (1)
Aturan CheckStyle default
Pengaturan Header File
Aturan penindasan default
Aturan CheckStyle dinonaktifkan secara default . Untuk menambahkan CheckStyle ke proyek Anda cukup tentukan properti dan plugin berikut.
pom.xml
<Properties> <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) </properties> <s Build> <lugin> <lugin> (4) <GroupId> io.spring.javaformat </groupid> <ArTifactid> Spring-javaformat-maven-plugin </arttifactid> </lugin> <lugin> (5) <GroupId> org.apache.maven.plugins </groupid> <ArTifactid> Maven-checkstyle-plugin </arttifactid> </lugin> </plugins> <Reporting> <lugin> <lugin> (5) <GroupId> org.apache.maven.plugins </groupid> <ArTifactid> Maven-checkstyle-plugin </arttifactid> </lugin> </plugins> </pelaporan> </bangun>
Gagal Build Atas Kesalahan Pemeriksa
Gagal Build Atas Pelanggaran Cek
Analisis CheckStyle Juga sumber uji
Tambahkan plugin Format Java Spring yang akan memformat ulang kode Anda untuk melewati sebagian besar aturan pemformatan checkStyle
Tambahkan plugin checkstyle ke fase build dan pelaporan Anda
Jika Anda perlu menekan beberapa aturan (misalnya panjang garis harus lebih lama), maka cukup bagi Anda untuk mendefinisikan file di bawah ${project.root}/src/checkstyle/checkstyle-suppressions.xml
dengan penekan Anda. Contoh:
Projectroot/Src/CheckStyle/CheckStyle-SuppResions.xml
<? XML Versi = "1.0"?> <! Doctype Suppresions Publik "-// Puppy Crawl // DTD Suppressions 1.1 // EN" "https://www.puppycrawl.com/dtds/suppressions_1_1.dtd"> <Suppressions> <Suppress Files = ".*ConfigServerApplication.java" check = "HideutilityClassConstructor"/> <Suppress Files = ".*configClientWatch.java" checks = "linelengthCheck"/> </suppressions>
Dianjurkan untuk menyalin ${spring-cloud-build.rootFolder}/.editorconfig
dan ${spring-cloud-build.rootFolder}/.springformat
untuk proyek Anda. Dengan begitu, beberapa aturan pemformatan default akan diterapkan. Anda dapat melakukannya dengan menjalankan skrip ini:
$ curl https://raw.githubusercontent.com/spring-cloud/spring-cloud-build/3.1.x/.editorconfig -o .editorconfig $ touch .springformat
Untuk mengatur IntelliJ, Anda harus mengimpor konvensi pengkodean kami, profil inspeksi, dan mengatur plugin CheckStyle. File -file berikut dapat ditemukan di proyek Build Cloud Spring.
spring-cloud-build-tools/
└── src ├── Centang │ └── checkStyle-Suppressions.xml (3) └── Utama └── sumber daya ├── checkstyle-header.txt (2) ├── checkstyle.xml (1) └── IntelliJ ├── intellij_project_defaults.xml (4) └── IntelliJ_spring_boot_java_conventions.xml (5)
Aturan CheckStyle default
Pengaturan Header File
Aturan penindasan default
Default Proyek untuk IntelliJ yang menerapkan sebagian besar aturan checkstyle
Konvensi Gaya Proyek untuk IntelliJ yang menerapkan sebagian besar aturan checkstyle
Gambar 1. Gaya kode
Pergi ke File
→ Settings
→ Editor
→ Code style
. Di sana klik pada ikon di sebelah bagian Scheme
. Di sana, klik pada nilai Import Scheme
dan pilih opsi Intellij IDEA code style XML
. Impor spring-cloud-build-tools/src/main/resources/intellij/Intellij_Spring_Boot_Java_Conventions.xml
file.
Gambar 2. Profil Inspeksi
Pergi ke File
→ Settings
→ Editor
→ Inspections
. Di sana klik ikon di sebelah bagian Profile
. Di sana, klik pada Import Profile
dan impor spring-cloud-build-tools/src/main/resources/intellij/Intellij_Project_Defaults.xml
file.
Centang
Agar IntelliJ bekerja dengan CheckStyle, Anda harus menginstal plugin Checkstyle
. Disarankan untuk juga menginstal Assertions2Assertj
untuk secara otomatis mengonversi pernyataan junit
Pergi ke File
→ Settings
→ Other settings
→ Checkstyle
. Ada klik pada ikon +
di bagian Configuration file
. Di sana, Anda harus menentukan dari mana aturan checkstyle harus dipilih. Pada gambar di atas, kami telah memilih aturan dari repositori Build Spring Cloud yang dikloning. Namun, Anda dapat menunjuk ke repositori GitHub Spring Cloud Build (misalnya untuk checkstyle.xml
: https://raw.githubusercontent.com/spring-cloud/spring-cloud-build/3.1.x/spring-cloud-build-tools/src/main/resources/checkstyle.xml
). Kita perlu memberikan variabel berikut:
checkstyle.header.file
-Harap arahkan ke Spring Cloud Build, spring-cloud-build-tools/src/main/resources/checkstyle-header.txt
file baik di repo kloning Anda atau melalui 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
- penekan default. Harap arahkan ke Spring Cloud Build, spring-cloud-build-tools/src/checkstyle/checkstyle-suppressions.xml
file baik di repo kloning Anda atau melalui 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
- Variabel ini sesuai dengan penekan dalam proyek lokal Anda. Misalnya Anda sedang mengerjakan spring-cloud-contract
. Kemudian arahkan ke folder project-root/src/checkstyle/checkstyle-suppressions.xml
. Contoh untuk spring-cloud-contract
adalah: /home/username/spring-cloud-contract/src/checkstyle/checkstyle-suppressions.xml
.
Penting | Ingatlah untuk mengatur Scan Scope ke All sources karena kami menerapkan aturan checkstyle untuk sumber produksi dan pengujian. |
Spring Cloud Build membawa sepanjang basepom:duplicate-finder-maven-plugin
, yang memungkinkan kelas dan sumber daya duplikat dan yang bertentangan di Java Classpath.
Duplikat Finder diaktifkan secara default dan akan berjalan dalam fase verify
build Maven Anda, tetapi itu hanya akan berlaku dalam proyek Anda jika Anda menambahkan duplicate-finder-maven-plugin
ke bagian build
dari pom.xml
projecst.
pom.xml
<s Build> <lugin> <lugin> <groupId> org.basepom.maven </groupid> <ArTifactId> duplikat-finder-maven-plugin </artifactid> </lugin> </plugins> </bangun>
Untuk properti lain, kami telah menetapkan default seperti yang tercantum dalam dokumentasi plugin.
Anda dapat dengan mudah mengesampingkannya tetapi mengatur nilai properti yang dipilih diawali dengan duplicate-finder-maven-plugin
. Misalnya, atur duplicate-finder-maven-plugin.skip
ke true
untuk melewatkan duplikat periksa dalam bangunan Anda.
Jika Anda perlu menambahkan ignoredClassPatterns
atau ignoredResourcePatterns
ke pengaturan Anda, pastikan untuk menambahkannya di bagian konfigurasi plugin proyek Anda:
<s Build> <lugin> <lugin> <groupId> org.basepom.maven </groupid> <ArTifactId> duplikat-finder-maven-plugin </artifactid> <Configuration> <abloredclasspatterns> <abloredClassPattern> org.joda.time.base.basedateTime </abledclasspattern> <abloredClassPattern>.*Module-Info </abangedClassPattern> </abangedClassPatterns> <abloredResourcePatterns> <abloredResourcePattern> changelog.txt </ablevoredResourcePattern> </ablomedResourcePatterns> </configuration> </lugin> </plugins> </bangun>