Java Bootstrap:Dropwizard与Spring Boot
如何在盡可能短的時間內使準備就緒的Java應用程序投入生產?
我不是一個早起的人,所以有時需要一些時間才能啟動“所有系統”提示。直到不久之前,這對于Java應用程序來說都是正確的,但是與發明貪睡功能不同鬧鐘,我們將在這里討論的解決方案實際上更有意義。 借助Dropwizard,Spring Boot,Groovy的Grails和Scala的Play等現代開源框架! 您可以在幾分鐘內從頭開始構建可用于生產環境的應用程序。 即使您不是早起的人。 即使您不喜歡巫師帽 。 在本文中,我們將討論Dropwizard和Spring Boot與基于Java的輕量級框架的異同。
新話題:Java的引導:Dropwizard與Spring啟動http://t.co/5QtUj7eoPc pic.twitter.com/QPoOt1ztOu
— Takipi(@takipid) 2015年3月2日
權衡:選擇自由與速度需求
無論使用哪種框架,都犧牲了一些選擇自由,因為Dropwizard和Spring boot都具有很高的判斷力,并且堅信約定優于配置。 有多強? 通過并行比較,您會發現我們已經進行了比較,檢查了每個第三方添加到組合中的第三方庫的不同風格。 生產級應用程序需要的大多數(如果不是全部)核心功能都是現成的或可以集成使用。
這種犧牲的好處是速度,盡管有時玩弄新庫并自定義您自己的完美環境很有趣。 當您需要快速起步并開始滾動時,最好委托這些決策并擺脫隨之而來的復雜性。 這并非完全是藍色藥丸還是紅色藥丸的場景:當您啟動并運行時,如果走得更遠,您很有可能能夠根據需要進行自定義和調整。 現在,只需將您最喜歡的構建工具(無論是Gradle還是Maven) 定向到Dropwizard和Spring Boot ,就可以了。
讓我們深入研究并發現每個框架的哪些方面將使您陷入困境,以及在哪些方面可以變得更加靈活。
劇透警報:我們在塔基皮(Takipi)面臨類似的困境, 因此決定與Dropwizard一起為企業提供塔基皮(Takipi)的內部風味。 但是曾經被視為Dropwizard的默認(也是唯一的)選擇的情況,導致我們打破了Spring引導和用盡XML配置的偏見。
Dropwizard與Spring Boot:誰擁有您的后端?
生產級應用程序依賴于許多組件,并且每個框架都為我們做出了選擇。 在此表中,所有放置RESTful Web應用程序的選擇武器都放置在此表中,其中左上角有Dropwizard,上面有向導帽,右上角是Spring Boot,綠色短褲。 核心的現成庫和附加組件由顏色分隔,Spring的內部依賴項標記為白色。
Dropwizard與Spring Boot:3rd Party庫
好的,現在我們對土地有了更好的了解,讓我們看看這實際上告訴了我們什么。 我還建議您仔細看看每個框架,因為所有內容都是開源的,可以在GitHub上隨心所欲地瀏覽:這是Dropwizard的源文件,這里是Spring Boot 。
Spring依賴
就像在罐子上說的那樣,Spring Boot專注于Spring應用程序。 因此,如果您想進入Spring生態系統或已經熟悉它并需要建立一個快速的應用程序,那么這可能是您要走的路。 REST支持和DevOps功能(我們即將討論的指標和運行狀況檢查)基于Spring Framework的核心,而DropWizard將其REST支持與Jersey一起使用 。 盡管在其他方面更靈活,但這幾乎是Spring Boot鎖定您的唯一方面。
HTTP服務器
在這里,我們可以看到Spring Boot如何變得更加靈活。 Dropwizard采用的約定優于配置方法,它比Spring Boot更為極端,并且完全基于Jetty,而Spring Boot默認采用Tomcat的可嵌入版本,但如果您偏愛Jetty甚至是RedHat的Undertow,則可以避免其他麻煩。
記錄中
這是關于配置問題的相同約定的另一個示例,Dropwizard在v0.4中從log4j切換到Logback。 我猜測log4j2的最新GA版本可能會對此進行更改。 在Spring Boot的前面,如果需要記錄,我們需要在Logback,log4j和log4j2之間進行選擇。 順便說一句,如果您使用的是Logback,則一定要檢查一下我們運行以比較不同日志記錄方法的性能的基準。
依賴注入
兩種框架之間的主要區別是依賴注入支持。 眾所周知,Spring的核心是內置于依賴注入支持中的,而Dropwizard并不是開箱即用的,您必須選擇一種支持它的社區集成。 一個流行的選擇是使用Google的Guice ,并使用社區 主導的 集成之一 。
測試– Fest vs. Hamcrest
這兩個框架都有一個特殊的模塊,用于測試, dropwizard測試和spring-boot-starter-test ,包括JUnit和Mockito依賴項。 Spring Boot自然也使用Spring Test,這里的主要區別在于匹配對象的形狀,檢查不同的對象是否匹配相同的模式。 Dropwizard支持FEST匹配器 (已不再開發),而Spring Boot與Hamcrest一起使用。
生產調試
與在開發階段進行測試的內置解決方案不同,在將應用程序部署到生產環境中時,無法保證一切都會按計劃進行。 特別是當您快速部署代碼時 。 有了Takipi,您就可以知道哪些錯誤構成最高風險,將其劃分優先級,并獲得有關如何修復它們的可行信息。
沒有操作就沒有開發
為了獲得生產級應用程序的稱號,每個框架的核心功能都包括對指標,運行狀況檢查和任務的支持。 簡而言之,度量標準使您可以跟蹤統計信息,例如內存使用情況以及執行代碼區域所需的時間。 健康檢查是一種隨時隨地進行測試并回答問題的方法,例如,此插座是否仍然打開? 還是數據庫連接仍然存在? 借助任務支持,您可以安排維護操作或定期任務。
Dropwizard指標庫本身就已廣受歡迎,您可以將其添加到任何項目中,甚至可以將其與Spring Boot的指標一起使用,以深入了解代碼在生產中的作用。 一項很酷的功能是向Graphite或Ganglia等服務報告,并提供20多種可用的集成 。 運行狀況檢查還與Dropwizard指標一起提供,并且任務是作為框架的一部分實施的。 在Spring Boot前端,該框架使用Spring的核心功能來支持其Ops角度。
關于無容器的注意事項
無容器的Java HTTP服務器是導致創建Dropwizard的關鍵驅動程序,幾年后又由Spring Boot引發。 與獨立容器不同,您可以像在應用程序中添加任何其他庫依賴項一樣簡單地添加HTTP服務器。 直觀,易于更新,而且您無需處理任何WAR文件。 XML配置保持最少。 關于故事的部署結束,Dropwizard和Spring Boot都使用胖JAR將所有JAR及其依賴項打包到一個文件中,從而使使用快速單線部署更加容易。
社區和發布周期
Dropwizard最初由Coda Hale于2011年底在Yammer時代發布。 從那時起,它通過了大約20個版本,目前為0.7.1,作為現代Java應用程序的入門指南,它獲得了社區的大力支持。 不利的一面是,每隔幾個月發布一次之后,新版本就會放慢速度。 在即將到來的0.8版本中,我們預計將主要看到第三方版本的更新和較小的修復。 Dropwizard當前支持Java 7及更高版本,要在Java 8上使用它,您可以簽出此部分更新,以享受其一些好處和新功能(或者如果您出于某種原因不喜歡joda-time)。
今天,您可以看到大部分來自Jochen Schalanda的提交, 其中包括160多個個人貢獻者和數十個社區支持的集成,例如Datasift的dropwizard-extra 。 在可用的Dropwizard集成中, 還 包括 Spring支持。 您絕對應該檢查的另一件事是此處的官方用戶組。
隨著Pivotal支持的Spring Boot在2014年以1.0版本加入游戲,幾乎可以想到的任何第3方庫都有40多種官方集成( Starter POM )。 這包括從日志記錄到社交API集成的所有內容。 JHipster是一個值得一提的新Spring Boot項目,它是Spring Boot和Angular的Yeoman生成器。
最重要的是,可以說Dropwizard擁有一個更大的社區,并且Spring Boot擁有更好的官方和結構化支持,以及Spring的現有用戶群。
結論
我希望您發現這種比較很有用,并且很高興聽到您對此的評論以及促使您選擇其中一項的因素。
翻譯自: https://www.javacodegeeks.com/2015/03/java-bootstrap-dropwizard-vs-spring-boot.html
總結
以上是生活随笔為你收集整理的Java Bootstrap:Dropwizard与Spring Boot的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 安卓全能王怎么退款(安卓全能王)
- 下一篇: 使用Flyway在Java EE中进行数