Dropwizard 有許多配置內置組件(如servlet引擎或數據庫數據源)的選項,以及建立可使用配置文件運行和配置的全新命令的選項。咱們還能夠爲那些但願根據運行環境進行更改的配置類型注入環境變量和系統屬性。與SpringBoot同樣,咱們能夠將整個屬性類綁定到特定對象。在本例中,讓咱們將全部helloapp.*properties 綁定到 HolaRestResource 類。使用 SpringBoot,咱們能夠選擇在帶有鍵值元組的屬性文件中編寫配置文件。咱們也可使用YAML。對於 Dropwizard,咱們只有YAML選項。java
所以,讓咱們在根項目中建立一個名爲conf/applica-tion.yml的文件(注意,若是不存在conf目錄,則須要建立該目錄)。咱們將配置文件放在conf文件夾中,以幫助咱們組織項目的不一樣配置文件(目錄的命名並不重要(也就是說,它對 Dropwizard 沒有任何傳統意義)。讓咱們在conf/application.yml文件中添加一些配置:git
在本例中,咱們將屬性設置爲特定值。若是咱們但願可以基於某些環境條件覆蓋它呢?咱們能夠經過傳入相似於Ddw.helloapp.say=guten標記的Java系統變量來重寫它。請注意,系統屬性名稱的dw.*部分是重要的;它告訴Drop嚮導將該值應用於應用程序的一個配置設置。若是咱們想根據OS環境變量的值重寫屬性,該怎麼辦?看上去像3-8的例子。github
屬性的值的模式是首先查看一個envi-ronment變量(若是存在的話)。若是環境變量未設置,則使用所提供的默認值。咱們還須要明確地告訴咱們的應用程序,咱們想要使用環境變量的補充。在HolaDropwizardApplication類中,initialize()方法,看示例3-9。數據庫
如今咱們已經設置了配置,讓咱們爲它構建支持對象。咱們有目的地建立了一個名爲helloapp的子配置,它容許咱們命名咱們的配置來組織它們。咱們能夠將它保留爲頂級配置項,可是因爲咱們沒有這樣作,讓咱們看看如何將應用程序.yml文件綁定到Dropwizard 配置對象。api
讓咱們建立一個名爲HelloSayingFactory的新類,它位於src/main/java/com/redhat/examples/Dropwizard/Resources目錄中:瀏覽器
這是一個簡單的JavaBean,帶有一些驗證(@NotEpty,來自Hibernate驗證器庫)和Jackson(@JsonProperty)註釋。這個類在YAML文件中包裝了HELLOAPP配置下的全部配置;如今,咱們只須要「saying」。當咱們第一次建立應用程序時,建立了一個HolaDropwi zardConfiguration類。讓咱們打開該類並添加新的HelloSayingFactory,如示例3-10所示。app
最後,咱們須要將配置注入HolaRestRe源代碼(示例3-11)。框架
因爲沒有強制使用的神奇依賴注入框架,您須要更新HolaDropwizardApplication,以便向REST資源注入配置(示例3-12)。ide
如今,咱們應該有一個至關複雜的配置注入能力可供咱們使用。在本例中,咱們有意地使它稍微複雜一些,以涵蓋您在實際用例中可能會作的事情。還要注意的是,雖然將全部這些鏈接起來的機制更簡單,但這裏有一個很是清晰的模式:將咱們的Java對象綁定到YAML配置文件,並使全部內容都很是簡單和直觀,而不須要利用複雜的框架。微服務
讓咱們運行咱們的應用程序。要作到這一點,讓咱們更新apor.xml以傳遞新的conf/application.yml文件,如示例3-13所示。
如今,咱們能夠從命令行運行:
在瀏覽器輸入http://localhost:8080/api/hola:
若是咱們中止微服務,並導出一個環境變量,咱們應該會看到一句新的語句:
默認狀況下,在管理端口上啓用了度量標準(默認狀況下爲8081),可是Dropwizard對咱們的應用程序有什麼具體的瞭解呢?讓咱們在HolaRestResources上添加幾個聲明性註釋(示例3-14)。
咱們添加了@Timed註釋,它跟蹤對服務的調用須要多長時間。用於收集指標的其餘註釋包括:
@Metered
調用服務率
@ExceptionMetered
拋出異常率
構建並從新啓動您的微服務,並嘗試在http://localhost:8080/api/hola上幾回訪問您的服務。而後,若是導航到http://localhost:8081/metrics?pretty=true,並滾動到底部(可能與您的不一樣),您應該會看到咱們服務的度量值。
Dropwizard 將咱們的微服務打包爲一個可執行的 jar。咱們所要作的就是構建咱們的應用程序並像下面這樣運行它:
下一節更加精彩!!!敬請期待
原文:
做者源碼:https://github.com/redhat-developer/microservices-by-example-source