Dropwizard Java REST框架釋出1.0.0版本
在近五年的開發之後,Dropwizard的Java RESTful Web服務框架釋出了1.0.0版本,它提供了一系列的新特性,並提供了支撐Java API的最新版本。
\\在這個里程碑釋出版本中,包含了如下的特性:
\\- 對Java 8的完全支援 \\
- 支撐軟體的最新版本,例如:\ \
在他們Web站點的釋出說明上,能夠看到完整的列表。
\\在Web站點上,Dropwizard是這樣定義的:
\\\\\Dropwizard是一個Java框架,用於開發運維友好、高效能、RESTful的Web服務。
\
Dropwizard被組織成了一系列的模組:
\\- Dropwizard Core(大多數應用都需要的內容) \\
- Dropwizard Client(Apache HttpClient和Jersey Client) \\
- Dropwizard JDBI(管理對JDBI的訪問) \\
- Dropwizard Migrations(針對Liquibase的包裝器) \\
- Dropwizard Hibernate(管理對Hibernate的訪問) \\
- Dropwizard Authentication(提供基於基本認證或OAuth的認證功能) \\
- Dropwizard Forms(通過Jersey,提供對multipart表單的支援) \\
- Dropwizard Validation(包含了Hibernate Validator) \\
- Dropwizard Views(FreeMarker和Mustache)\
另外,還提供了針對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的組織包括:
\\- Yammer\\
- Change.org\\
- FullContact\\
- Airbnb\
Dropwizard提供了一個供我們學習的使用者指導,另外他們還鼓勵開發人員通過訪問Dropwizard GitHub的repository來為這個專案作出貢獻。
\\檢視英文原文:Dropwizard Java REST Framework Version 1.0.0 Features Updated Library Support, Scala, and Java 8
相關文章
- Apache HugeGraph1.0.0 版本正式釋出!Apache
- 體驗 正式釋出 的OSM v1.0.0 版本
- HypriotOS1.0.0(Blackbeard)版本釋出
- Nacos 釋出 1.0.0 GA 版本,可大規模投入到生產環境
- Micronaut框架3的GA 版本釋出!框架
- lightCMS v1.0.0 釋出
- CoreWCF 1.0.0 釋出,微軟正式支援WCF微軟
- MarkDown/reST 文件釋出流水線REST
- Java爬蟲框架,WebMagic 0.4.0 釋出Java爬蟲框架Web
- 輕量級框架 Gin 釋出 v1.1 版本框架
- 支援ES6的IO.js 1.0.0釋出JS
- Jdon框架1.2版本釋出,包括詳細文件。框架
- 讓Github暢通無阻,FastGithub1.0.0釋出GithubAST
- Go 語言框架 Gin 終於釋出 v1.2 版本Go框架
- Layui首個版本釋出,經典模組化前端UI框架UI前端框架
- Semantic Kernel .NET SDK 的 v1.0.0 Beta1 釋出
- Spring框架4.0 GA釋出,最新版本框架開發包下載Spring框架
- jQuery 釋出 3.4.0 版本jQuery
- Gitea 釋出 1.0.1 版本Git
- Hasor 0.0.10 釋出,輕量化 Java 開發框架Java框架
- 開源自動化運維平臺 BigOps 1.0.0 釋出運維Go
- Zeu.js 1.0.0 釋出, 九大全新元件全面升級JS元件
- 甲骨文要改變 Java 釋出頻率,將每半年釋出一個版本Java
- CoreFlex框架釋出 `0.1.1`Flex框架
- Java RPC 框架 Solon 1.3.9 釋出,更便利的支援JavaRPC框架
- Java多功能全棧框架Vaadin 23.0.0釋出Java全棧框架
- Java Web 開發框架Apache Wicket v6.4釋出JavaWeb框架Apache
- Solon Java 應用開發框架 v2.7.5 釋出Java框架
- Oracle 12.1.0.2.0 版本釋出Oracle
- SOA新版本釋出
- 【重磅】VS Code 的 Java 語言支援 1.0 版本正式釋出Java
- 最新的Java SE平臺和JDK版本釋出計劃JavaJDK
- 酷瓜雲網課(騰訊雲版)v1.0.0-beta1釋出
- 基於微信機器人的公眾號採集工具:mlog-wxbot v1.0.0版本釋出機器人
- 功能強大,UI簡潔,動畫漂亮,互動優雅的XPopup釋出1.0.0版本,一個就夠了!UI動畫
- [版本釋出]ThinkOX V1正式版釋出【版本號V1.0.2】
- day49-rest框架REST框架
- Apache Doris 1.2.4 Release 版本正式釋出|版本通告Apache