Dropwizard介紹
Dropwizard是一個微服務框架, 是各項技術的一個集成封裝。它包含了以下組件: - 嵌入式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
Dropwizard結構的服務組成
1. Configuration:用於設置該服務的配置,比方說在服務開放在哪個端口,數據庫配置是怎樣的等等。 2. Application:該服務的主入口,定義該服務使用哪個配置文件,開放哪些Resource,該服務需要哪些HealthCheck等等。 3. Resource:定義一個資源,包括如何獲取該資源,對該資源做Get/Post/Delete/Query時,對應的各種業務邏輯。 4. Representation:定義了一個服務返回值對象,當服務返回該對象時,會自動的把該對象按屬性值生成一個Json格式的字符串返回給服務調用者。 5. HealthCheck:在Dropwizard為每個服務提供的OM框架中用到,通過它可以隨時檢測當前服務是否可用。開發步驟
maven引入Dropwizard
<dependencies>
<dependency>
<groupId>io.Dropwizard</groupId>
<artifactId>Dropwizard-core</artifactId>
<version>${Dropwizard.version}</version>
</dependency>
</dependencies>
定義Configuration 類和 yml文件
每個Dropwizard應用都有一個對應配置類configuration,用於指定特定的環境參數。
這個配置類擴展自 io.Dropwizard.Configuration類,應用啟動時,系統將從YAML配置文件反序列化讀取對應的參數。
定義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-Dropwizard
定義該服務返回值的Representation(可選)
定義一個HeatlthCheck(可選)
定義Application類
在application類里,可以綁定靜態資源,注冊Resource,注冊swagger等。