Dropwizard介紹
Dropwizard是一個微服務框架, 是各項技術的一個集成封裝。它包含了如下組件:html
- 嵌入式Jetty,一個應用程序被打包成一個Jar文件,並開始自已嵌入的Jetty容器。除此以外無任何其它war文件和外部servlet容器
- JAX-RS : Jersey,用來寫基於REST的Web服務
- JSON:REST服務數據傳遞處理所有用JSON,使用Jackson庫
- 日誌:使用 Logback 和SLF4
- 數據庫:使用Hibernate,集成ORM框架 for DB
- 指標:使用Metrics, Metrics是一個給JAVA服務的各項指標提供度量工具的包,在JAVA代碼中嵌入Metrics代碼,能夠方便的對業務代碼的各個指標進行監控,同時,Metrics可以很好的跟Ganlia、Graphite結合,方便的提供圖形化接口。
Dropwizard源碼: https://github.com/Dropwizard/Dropwizard
入門:http://www.dropwizard.io/0.9.2/docs/getting-started.html
java
Dropwizard結構的服務組成
- Configuration:用於設置該服務的配置,比方說在服務開放在哪一個端口,數據庫配置是怎樣的等等。
- Application:該服務的主入口,定義該服務使用哪一個配置文件,開放哪些Resource,該服務須要哪些HealthCheck等等。
- Resource:定義一個資源,包括如何獲取該資源,對該資源作Get/Post/Delete/Query時,對應的各類業務邏輯。
- Representation:定義了一個服務返回值對象,當服務返回該對象時,會自動的把該對象按屬性值生成一個Json格式的字符串返回給服務調用者。
- HealthCheck:在Dropwizard爲每一個服務提供的OM框架中用到,經過它能夠隨時檢測當前服務是否可用。
開發步驟
maven引入Dropwizard
<dependencies>
<dependency>
<groupId>io.Dropwizard</groupId>
<artifactId>Dropwizard-core</artifactId>
<version>${Dropwizard.version}</version>
</dependency>
</dependencies>
定義Configuration 類和 yml文件
![](http://static.javashuo.com/static/loading.gif)
每一個Dropwizard應用都有一個對應配置類configuration,用於指定特定的環境參數。
這個配置類擴展自 io.Dropwizard.Configuration類,應用啓動時,系統將從YAML配置文件反序列化讀取對應的參數。git
定義resource
Dropwizard中大量使用了註解,api-doc定義經過swagger註解自動生成。
Jersey註解使用說明:
https://jersey.java.net/documentation/latest/jaxrs-resources.html
Swagger註解使用說明:
https://github.com/swagger-api/swagger-samples/tree/master/java/java-Dropwizardgithub
定義該服務返回值的Representation(可選)
定義一個HeatlthCheck(可選)
定義Application類
在application類裏,能夠綁定靜態資源,註冊Resource,註冊swagger等。數據庫