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文件

每一个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等。数据库