Spring Cloud Sleuth的最後一個次要版本是3.1。您可以檢查3.1.x分支以獲取最新提交。
警告 | Spring Cloud偵探將無法與Spring Boot 3.X一起使用。 Sleuth將支持的春季靴子的最後一個主要版本是2.x。 |
該項目的核心轉移到了千分尺的跟踪項目,並且儀器將移至千分尺和所有各個項目(不再所有儀器都將在單個存儲庫中完成。
您可以檢查“千分尺”跟踪遷移指南,以了解如何從春季雲偵探到千分尺遷移。
Spring Cloud Sleuth提供彈簧靴自動配置,用於分佈式跟踪。
偵探配置您需要開始的所有內容。這包括向跟踪數據(跨度)報告的地方,如果發送遠程字段(行李)以及哪些庫的追踪,則保留多少個痕跡(採樣)。
將彈簧雲偵探添加到Spring Boot應用程序的類Path(以及Tracer實現),您將在日誌中看到跟踪ID。帶有勇敢示踪劑的偵探的示例:
<! - 彈簧雲偵探需要一個彈簧雲bom - > <DependencyManagement> <依賴項> <依賴項> <groupId> org.springframework.cloud </groupId> <Artifactid> spring-cloud依賴性</artifactid> <! - 提供最新的穩定彈簧雲版本火車版本(例如2020.0.0) - > <版本> $ {resions.train.train.train.version} </version > <type> pom </type> <Scope>導入</scope> </dependency> </依賴項> </depentencyManagement> <依賴項> <! - 引導的Web支持 - > <dependency> <groupId> org.springframework.boot </groupId> <Artifactid> Spring-Boot-Starter-Web </artifactid> </dependency> <! - 偵探帶有勇敢的示踪劑實現 - > <dependency> <groupId> org.springframework.cloud </groupId> <Artifactid> spring-cloud-starter-seleuth </artifactid> </dependency> </依賴項>
考慮以下HTTP處理程序:
@RestControllerPublic類democontroller {private static logger log = loggerfactory.getLogger(democontroller.class);@requestmapping(“/”)public string home(){log.info() } }
如果將該處理程序添加到控制器中,則可以在日誌中查看home()
(請注意0b6aaf642574edd3
IDS)。
2020-10-21 12:01:16.285信息[,0B6AAF642574EDD3,0B6AAF642574EDD3,TRUE] 289589 --- [NIO-9000-EXEC-1] DEMOCONTROLLER機器:處理回家!
筆記 | 您可以設置logging.level.org.springframework.web.servlet.DispatcherServlet=DEBUG ,而不是明確記錄處理程序中的請求。 |
筆記 | SET spring.application.name=myService (例如)查看服務名稱以及跟踪和跨度ID。 |
請訪問文檔頁面以了解有關該項目的更多信息。
要構建源,您需要安裝JDK 1.8。
Spring Cloud將Maven用於大多數與構建相關的活動,您應該能夠通過克隆您感興趣的項目並打字來快速脫離地面
$ ./mvnw安裝
筆記 | 您也可以自己安裝maven(> = 3.3.3),並在下面的示例中運行mvn 命令代替./mvnw 。如果這樣做,如果您的本地Maven設置不包含春季預發行偽像的存儲庫聲明,則可能還需要添加-P spring 。 |
筆記 | 請注意,您可能需要通過設置MAVEN_OPTS 環境變量以-Xmx512m -XX:MaxPermSize=128m 。我們嘗試在.mvn 配置中介紹它,因此,如果您發現必須這樣做才能使構建成功,請提高票證以將設置添加到源控制中。 |
需要中間件(IE redis)進行測試的項目通常要求[Docker](https://www.docker.com/get- started)的本地實例已安裝並運行。
Spring-Cloud-Build模塊具有“ DOCS”配置文件,如果將其切換,則將嘗試從src/main/asciidoc
構建ASCIIDOC源。作為該過程的一部分,它將查找README.adoc
並通過加載所有包含但不解析或渲染的所有內容來處理它,只需將其複製到${main.basedir}
(默認為${basedir}
,即專案).如果讀書文件中有任何更改,則將在Maven構建後作為修改的文件在正確的位置出現。只需提交並推動更改即可。
如果您沒有IDE偏好,我們建議您在使用代碼時使用Spring Tools Suite或Eclipse。我們使用M2Eclipse Eclipse插件進行Maven支持。只要使用Maven 3.3.3或更高,其他IDE和工具也應無問題。
Spring Cloud項目需要激活“春季” Maven輪廓,以解決春季里程碑和快照存儲庫。使用您的首選IDE設置此配置文件以保持活動狀態,或者您可能會遇到構建錯誤。
我們建議使用Eclipse時使用M2Eclipse Eclipse插件。如果您還沒有安裝M2Eclipse,則可以從“ Eclipse Marketplace”獲得。
筆記 | M2E的較舊版本不支持Maven 3.3,因此一旦將項目導入Eclipse,您還需要告訴M2Eclipse將正確的配置文件用於項目。 如果您看到與項目中的POM有關的許多不同的錯誤,請檢查您是否具有最新的安裝。 如果您無法升級M2E,請將“ Spring”配置文件添加到您的settings.xml 。另外,您可以將父pom的“春季”配置文件複製到您的settings.xml 為xml。 |
如果您不想使用M2Eclipse,則可以使用以下命令生成Eclipse Project元數據:
$ ./mvnw蝕:日食
可以通過從file
菜單中選擇import existing projects
來導入生成的日食項目。
彈簧雲是在非限制性Apache 2.0許可下發布的,並遵循非常標準的GitHub開發過程,使用GitHub Tracker進行問題並將拉的請求合併到主機中。如果您想貢獻一些瑣碎的東西,請不要猶豫,但請遵循以下準則。
在我們接受非平凡的補丁或拉動請求之前,我們需要您簽署貢獻者許可協議。簽署貢獻者的協議並不授予任何人對主要存儲庫的權利,但這確實意味著我們可以接受您的貢獻,如果我們這樣做,您將獲得作者信用。 可能會要求主動貢獻者加入核心團隊,並鑑於能夠合併拉的請求。
該項目遵守貢獻者盟約行為準則。通過參加,您應該維護此代碼。請向spring [email protected]報告不可接受的行為。
這些對拉動請求都不是必不可少的,但是它們都會有所幫助。 也可以在原始拉請求之後添加它們,但在合併之前。
使用彈簧框架代碼格式約定。如果使用Eclipse,則可以使用eclipse-code-formatter.xml
文件導入Formatter設置,從Spring Cloud構建項目中。如果使用Intellij,則可以使用Eclipse Code Formatter插件導入相同的文件。
確保所有新的.java
文件都具有至少一個@author
標記的簡單Javadoc類評論,最好至少一段有關課程的用途。
將ASF許可標頭註釋添加到所有新的.java
文件(從項目中的現有文件中復制)
將自己作為@author
添加到您對.java文件進行實質修改的.java文件(不僅僅是化妝品更改)。
添加一些Javadocs,如果更改命名空間,請使用一些XSD DOC元素。
一些單位測試也會有所幫助 - 有人必須這樣做。
如果沒有其他人使用您的分支,請反對當前主人(或主項目中的其他目標分支)。
在編寫提交消息時,請遵循這些約定,如果您要解決現有問題,請在提交消息結束時添加Fixes gh-XXXX
(其中XXXX是問題編號)。
彈簧雲構建帶有一組CheckStyle規則。您可以在spring-cloud-build-tools
模塊中找到它們。模塊下最著名的文件是:
Spring-Cloud-build-tools/
└ - src ├ - 登機風格 ││└─-checkStyle-suppressions.xml(3) └ - 主要 └ - 資源 ├─-checkstyle-header.txt(2) └─CheckStyle.xml(1)
默認的checkStyle規則
文件標頭設置
默認抑制規則
默認情況下禁用檢查方案規則。要將CheckStyle添加到您的項目中,只需定義以下屬性和插件即可。
pom.xml
<properies> <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)</properies> <build> <插件> <plugin>(4)<groupId> io.spring.javaformat </groupId> <Artifactid> Spring-Javaformat-Maven-Plugin </artifactid> </plugin> <plugin>(5)<groupId> org.apache.maven.plugins </groupId> <Artifactid> maven-checkstyle-plugin </artifactid> </plugin> </插件> <報告> <插件> <plugin>(5)<groupId> org.apache.maven.plugins </groupId> <Artifactid> maven-checkstyle-plugin </artifactid> </plugin> </插件> </Reporting> </build>
失敗在檢查方案錯誤時構建
在違反檢查方案的情況下未能建立
CheckStyle分析還進行測試源
添加Spring Java格式插件,該插件將重新格式化代碼以通過大多數CheckStyle格式規則
將CheckStyle插件添加到您的構建和報告階段
如果您需要抑制某些規則(例如,需要更長的時間),那麼您就足以在${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”> <抑制> <puspress files =“ <puspress files =“ </抑制>
建議將${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 Project中找到。
Spring-Cloud-build-tools/
└ - 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規則
文件標頭設置
默認抑制規則
應用大部分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
文件。
checkstyle
要使Intellij使用CheckStyle,您必須安裝Checkstyle
插件。建議還安裝Assertions2Assertj
以自動轉換Junit主張
轉到File
→ Settings
→ Other settings
→ Checkstyle
。在其中單擊Configuration file
部分中的+
圖標。在那裡,您必須定義應從何處挑選何處。在上圖中,我們從克隆的彈簧雲構建存儲庫中選擇了規則。 However, you can point to the Spring Cloud Build's GitHub repository (eg for the 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
checkstyle.suppressions.file
默認抑制。請將其指向Spring Cloud Build的, 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 因為我們將CheckStyle規則應用於生產和測試來源。 |
Spring Cloud Build帶來了basepom:duplicate-finder-maven-plugin
,它可以在Java Class Path上標記重複和衝突的類和資源。
默認情況下啟用了重複的Finder,並將在Maven構建的verify
階段運行,但是只有在Projecst pom.xml
的build
部分中添加duplicate-finder-maven-plugin
時,只有在項目中生效。
pom.xml
<build> <插件> <插件> <groupId> org.basepom.maven </groupId> <Artifactid>重複的finder-maven-plugin </artifactid> </plugin> </插件> </build>
對於其他屬性,我們設置了插件文檔中列出的默認值。
您可以輕鬆地覆蓋它們,但設置所選屬性的價值,前綴加上duplicate-finder-maven-plugin
。例如,將duplicate-finder-maven-plugin.skip
設置為true
以跳過構建中的副本。
如果您需要在設置中添加ignoredClassPatterns
或ignoredResourcePatterns
,請確保在項目的插件配置部分中添加它們:
<build> <插件> <插件> <groupId> org.basepom.maven </groupId> <Artifactid>重複的finder-maven-plugin </artifactid> <Configuration> <忽略ClassPatterns> <gnoredClassPattern> org.joda.time.base.base.base.baseateTime </bignoredClassPattern> <忽略ClassPattern> </忽略ClassPatterns> <忽略resourcepatterns> <忽略Resourcepattern> changelog.txt </gientReedResourcepattern> </忽略ResourcePatterns> </configuration> </plugin> </插件> </build>