写点什么

Dropwizard Java REST 框架发布 1.0.0 版本

  • 2016-09-06
  • 本文字数:2369 字

    阅读完需:约 8 分钟

在近五年的开发之后,Dropwizard 的 Java RESTful Web 服务框架发布了 1.0.0 版本,它提供了一系列的新特性,并提供了支撑 Java API 的最新版本。

在这个里程碑发布版本中,包含了如下的特性:

在他们 Web 站点的发布说明上,能够看到完整的列表。

Web 站点上,Dropwizard 是这样定义的:

Dropwizard 是一个 Java 框架,用于开发运维友好、高性能、RESTful 的 Web 服务。

Dropwizard 被组织成了一系列的模块:

另外,还提供了针对 Dropwizard 的 Scala 支持

起步

起步指南提供了概述,包含了构建基本“hello, world!”应用的详细指导。这个指南推荐使用 Maven 来构建应用,但是其他的构建工具如 Ant Gant Gradle SBT 也可以使用。

如下的 Maven 命令会按照交互模式生成基础的 Dropwizard 应用:

mvn archetype:generate -DarchetypeGroupId=io.dropwizard.archetypes -DarchetypeArtifactId=java-simple -DarchetypeVersion=1.0.0正确地回答这些提示问题非常重要,比如:

  • $groupId:用于源码的打包,比如 com.example 或 io.dropwizard,它会作为 $package 的默认值;
  • $artifactID:用于生成应用的根目录,比如 dropwizard-1.0.0;
  • $version:默认值是 1.0-SNAPSHOT;
  • $package:默认值是通过$groupId的值读取到的;
  • $name:按照驼峰规则的名称,比如 HelloWorld。这样的话会生成 HelloWorldApplication.java 和 HelloWorldConfiguration.java,它们扩展自基础类,分别是 Application.java 和 Configuration.java。

[点击图片放大]

在文档剩下的步骤完成后,这个样例就可以在用户本地的机器上运行了,使用 http://localhost:8080/hello-world?name=Michael+Redlich 这样的 URL,将会得到如下的服务器响应:

我们在 GitHub 上可以找到针对数据库版本的“hello, world!”应用。

更为复杂的样例

Al Scott 创建过更为复杂的应用,他是 Campspot 的开发领导,并且还是 Atomic Object博客(Atomic Spin)的长期贡献者。他撰写过由三部分所组成的博客系列,分别实现了认证授权多租户功能,用来阐述Dropwizard 的相关特性。因为Scott 的系列文章是基于Dropwizard 0.9.x 编写的,所以InfoQ 与他进行了交流,探讨了他对这次里程碑版本发布的看法。

InfoQ:你为什么会钟情于 Dropwizard?

Al Scott:在我的职业生涯中,曾经使用过多个不同的 Web 平台,但是没有一个像 Dropwizard 这样高效。所有的组件都坚若磐石并且经过了深思熟虑,所以,我能够集中精力完成自己的事情。如果需要深入框架源码来了解某些功能是如何实现的话,你会发现这是非常有趣的事情,因为 Dropwizard 的源码可以说是我见过的最棒和最易于理解的代码。另外,我还很欣赏这个框架的整体稳定性。更新通常会带来丰富的特性,这些特性能够以最小的破坏性非常便捷地进行运用。底层的核心库(Jersey、Jetty、Jackson 和 Hibernate)也非常稳定,所以当版本变更的时候,很少会有较大的意外出现。

InfoQ:在开发 RESTful Web 服务方面,Dropwizard 与其他 Java 框架的区别是什么?

Al Scott:我认为,构建和运行过程的简洁性是让 Dropwizard 与众不同的关键所在。我曾经见识过各种 Spring MVC 和 Tomcat/Websphere 的搭建过程,Dropwizard 只需一个 pom 文件,并且能够得到一个可直接运行的 jar 文件,对于这种方式,我是非常欣赏的。在运维方面,这一点意义重大,因为这会让服务的部署过程变得非常简单,不必再去处理繁琐的 WAR 文件和复杂的 XML 配置。另外,我比较欣赏的一点就是 Dropwizard 没有偏离其底层库的初衷,在能够提供帮助的地方,它进行了一些很好的抽象,但是整体而言保持了这些库的原貌,所以我们可以很容易地按照这些底层库的文档来使用它们。

InfoQ:在升级到 Dropwizard 1.0 的过程中,你的示例应用受到过什么负面的影响吗?

Al Scott:针对我的博客文章所创建的 Github repository 其实已经更新到了 Dropwizard 1.0。这大约耗费了 10 分钟的时间,其中有个接口 io.dropwizard.auth.Authenticator 有所变更。原来它使用的是 Guava 的 optional 类,现在改成了 Java 8 内置的 Optional。在升级生产环境的应用时,我也遇到过类似的情况,生产环境的应用所对应的代码库会更大一些。在生产环境中,我遇到的唯一一个问题就是需要添加一个我们所使用的 logging appender,它目前还没有转换到 1.0 的版本中。整体的升级非常简单,我实在想不出大家不尽快进行升级的理由。

InfoQ:在升级在 Dropwizard 1.0 版本之后,你的示例应用有机会进行一些增强吗?

Al Scott:在我们的生产环境应用中,我们一直比较喜欢的是资源方法(resource method)对返回值的校验。另外,对 Java 8 支持的增强也是非常棒的,在原来的一些场景中,我们必须要使用 Guava Optionals 和 Joda time,现在就可以直接使用 Java 8 中对应的特性了。

在生产环境采用 Dropwizard 的组织包括:

Dropwizard 提供了一个供我们学习的用户指导,另外他们还鼓励开发人员通过访问Dropwizard GitHub 的 repository 来为这个项目作出贡献。

查看英文原文: Dropwizard Java REST Framework Version 1.0.0 Features Updated Library Support, Scala, and Java 8

2016-09-06 19:003034

评论

发布
暂无评论
发现更多内容

好用的微软代码编辑器Visual Studio Code免费版(mac&win)

理理

Visual Studio Code 微软代码编辑器

ps2019直装版:Photoshop 2019 for Mac/Win 版

你的猪会飞吗

Mac软件下载站 PS2019 Mac中文版下载 mac破解软件下载

苹果Mac电脑想要实现双系统运行,Parallels Desktop虚拟机来帮你!

Rose

Parallels Desktop 虚拟机 Mac双系统安装

【ACL2024】阿里云人工智能平台PAI多篇论文入选ACL2024

阿里云大数据AI技术

人工智能 阿里云 acl 论文 PAI

CSS萤火虫按钮特效

南城FE

CSS 前端 动画

开发者洞察报告:百万级鸿蒙岗位缺口,开发者薪资涨幅43.1%

最新动态

全红婵夺冠!数业智能心大陆告诉你原生家庭在背后发挥了怎样的力量

心大陆多智能体

智能体 AI大模型 心理健康 数字心理

无缝融入,即刻智能[一]:Dify-LLM大模型平台,零编码集成嵌入第三方系统,42K+星标见证专属智能方案[含ollama部署]

汀丶人工智能

人工智能 agent LLMOps rag dify

MES系统如何实现生产管理自动化

万界星空科技

mes 万界星空科技 制造业工厂 生产管理MES系统 自动化生产

专题 | IAM业界热度不减,2024市场持续井喷(二)

芯盾时代

身份安全 iam 身份和访问管理 零信任

后期混音效果全套插件Waves 15插件下载安装(mac&win))

Rose

混音套件 Waves 15插件下载 Waves 15破解教程

5款超好用的苹果电脑实用工具,提高Mac使用体验

Rose

潜在新就业岗位超300万个 原生鸿蒙开发创造百万级人才缺口

最新动态

交易所/永续合约跟单交易系统开发稳定版/案例搭建/成熟技术

V\TG【ch3nguang】

中国开发者画像报告:鸿蒙开发人才缺口达百万,薪资与技术成长超预期

最新动态

去中心化swap博饼交易所底池LP质押挖矿分红系统开发指南

V\TG【ch3nguang】

去中心化swap博饼交易所 LP质押挖矿分红系统开发

汉化版Microsoft Remote Desktop微软远程桌面使用教程

理理

永久使用 Photoshop CC 2019中文破解版下载安装包(mac&win)

理理

mac&win xmind思维导图破解安装包(附Xmind入门指南)

理理

XMind 2024破解版 XMind思维导图下载 xmind使用教程

Advanced RAG 11:对用户输入的内容进行「分类处理」和「再优化」

Baihai IDP

AI LLMs 企业号 8 月 PK 榜 rag RQ-RAG

面经精选:数据库高频面试十问

王中阳Go

数据库 面试

基于51单片机设计的公交车LED屏

DS小龙哥

8月月更

苹果Mac电脑怎么设置动态桌面,heic动态桌面壁纸怎么使用

Rose

地理编码之旅,一场地址与坐标的漫游

HarmonyOS SDK

HarmonyOS

苹果Mac图像修图软件Photomator和Pixelmator Pro 有什么区别?

Rose

面试这么多,为什么拿不到offer?

老张

面试 求职 职场成长

实力认证!望繁信科技入选2023WISE未来商业之王年度企业

望繁信科技

数字化转型 大模型 流程挖掘 流程智能 上海望繁信

如何卸载Maxon产品?红巨星系列插件如何彻底清除

Rose

红巨星激活系列插件

Dopple Labs 选择 Zilliz Cloud 作为安全高效的向量数据库

Zilliz

人工智能 Milvus Zilliz 向量数据库 大语言模型

苹果电脑如何修改hosts文件?mac修改Hosts文件教程

Rose

奈飞中文影视_Netflix for mac v2.13.0激活版 支持m1/m2

理理

Clicker for Netflix Netflix客户端 Netflix mac版破解版下载 网飞客户端

Dropwizard Java REST框架发布1.0.0版本_Java_Michael Redlich_InfoQ精选文章