##介绍
Dropwizard是一个适合开发REST服务的轻量级Java框架。由Yammer团队负责开发并开源。
目前最新的稳定版本是0.7.1。
Dropwizard算不上是一个全新的框架,但是它是建立在若干成熟的库的基础上,并把他们有机的整合起来。
作为一个轻量级框架,核心只包括了构建JSON服务的最小库集合。
##依赖
核心依赖的库包括:
- 使用Jetty来担当Java容器,支持HTTP请求。
- 使用实现了JAX-RS的Jersey来实现REST服务。
- 使用Jackson来支持JSON的序列化和反序列化。
- 使用了Metics来提供运行时监控信息
- 使用了Guava提供优化过的数据结构和帮助类。
- 日志使用Logback。
- 使用Hibernate Validator作数据校验。
- Joda Time来帮助处理日期和时间。
除了以上核心库,还有一些可选的模块来扩展功能:
- Client模块:提供2种HTTP客户端来和其他WEB服务集成。
- JDBI模块:使用JDBI库来连接关系型数据库。JDBI是一个灵活的模块化的数据访问库。
- Migration模块:提供了数据库的版本控制。
- Hibernate模块:集成了Hibernate来访问关系型数据库。
- Authentication模块:提供了OAuth认证相关的接口。
- Test模块:提供了帮助类来实现单元测试和集成测试。
##部署
Dropwizard一开始就是按照微服务的需求来开发的,所以部署的时候和传统Java应用不太一样。
传统Java应用都需要部署到容器内,比如tomcat,jboss。
而Dropwizard因为内置了Jetty容器,所以可以通过命令行独立运行。
Dropwizard的项目打包后,就只有一个jar文件和一个配置文件。
运行它只需要在命令行里输入:
$ java -jar your-app.jar server app-configuration.yml
其中app-configuration.yml就是配置文件。
可以看出Dropwizard的项目部署十分简单,而且所有的配置都集中在一个文件里。
当然也可以按照需求把配置拆分成多个文件。
##例子
按照官方文档,作者创建了一个Startup项目。具体代码就不贴了。
有兴趣的同学可以访问这个地址去下载。
下载完后,运行maven命令来打包应用:
mvn clean package
再运行以下命令初始化数据库:
$ java -jar target\dropwizard-startup-1.0.0-SNAPSHOT.jar db migrate configuration.yml
再运行以下命令启动服务:
$ java -jar target\dropwizard-startup-1.0.0-SNAPSHOT.jar server configuration.yml
服务启动后,可以看到如下输出:
最后打开浏览器,输入http://localhost:8080/users/2
,可以看到JSON返回。
{"name":"Ludwig Xu","email":"magicwind@msn.com"}