bootstrap模板

如何在尽可能短的时间内启动可用于生产环境的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的现有用户群。

结论

  1. 如果您希望进入Spring生态系统,那么选择Spring Boot可能是一个明智的选择。 它不仅是引导RESTful Java应用程序的一种方式,而且还充当与数十个服务集成的Spring的网关。 也许这里真正的问题是您是否应该开始寻找/回到Spring? 这可能是另一个完全可以讨论的话题。 否则,Dropwizard将最适合您的需求。
  2. 这里的第二个问题是您如何依赖于依赖注入? 如果选择Guice,那么使用Dropwizard并使用社区集成之一将是一个简单的解决方案,而不是使用Spring依赖项注入方式。
  3. 最后但并非最不重要的一点是,看看并排比较,如果您要从头开始构建应用程序,那么哪个框架可以做出选择? 请记住默认选择,因为花费更多的时间来配置这种引导类型会背叛其原因。

我希望您发现此比较有用,并且很高兴听到您对此的评论以及使您选择一个以上的因素。

翻译自: https://www.javacodegeeks.com/2015/03/java-bootstrap-dropwizard-vs-spring-boot.html

bootstrap模板

bootstrap模板_Java Bootstrap:Dropwizard与Spring Boot相关推荐

  1. Java Bootstrap:Dropwizard与Spring Boot

    如何在尽可能短的时间内使准备就绪的Java应用程序投入生产? 我不是一个早起的人,所以有时需要一些时间才能启动"所有系统"提示.直到不久之前,这对于Java应用程序来说都是正确的, ...

  2. java 模板引擎_极简 Spring Boot 整合 Thymeleaf 页面模板

    点击"牧码小子"关注,和众多大牛一起成长! 关注后,后台回复 java ,领取松哥为你精心准备的技术干货! 虽然现在慢慢在流行前后端分离开发,但是据松哥所了解到的,还是有一些公司在 ...

  3. java 消息服务框架_Java消息服务 在 Spring Boot 中的使用

    原标题:Java消息服务 在 Spring Boot 中的使用 当前环境 Mac OS 10.11.x docker 1.12.1 JDK 1.8 SpringBoot 1.5 前言 基于之前一篇&q ...

  4. Spring Boot基础学习笔记09:Thymeleaf模板引擎

    文章目录 零.学习目标 1.了解Spring Boot支持的视图技术 2.掌握Thymeleaf常用标签 3.掌握Thymeleaf标准表达式 4.掌握Thymeleaf基本使用 5.掌握使用Thym ...

  5. 使用Spring Boot开发Web项目

    前面两篇博客中我们简单介绍了spring Boot项目的创建.并且也带小伙伴们来DIY了一个Spring Boot自动配置功能,那么这些东西说到底最终还是要回归到Web上才能体现出它的更大的价值,so ...

  6. SpringBoot - Spring Boot 应用剖析

    文章目录 Spring MVC VS Spring Boot [HTTP 请求响应过程] [基于 Spring MVC 的 Web 应用程序开发流程] [基于 Spring Boot 的 Web 应用 ...

  7. Spring之Spring Boot

    Spring之Spring Boot Spring Boot做了什么? Spring Boot整合了所有的框架:约定大于配置,无样板化的配置:自动化的依赖管理 Spring Boot 的核心注解是? ...

  8. 使用React和Spring Boot构建一个简单的CRUD应用

    "我喜欢编写身份验证和授权代码." 〜从来没有Java开发人员. 厌倦了一次又一次地建立相同的登录屏幕? 尝试使用Okta API进行托管身份验证,授权和多因素身份验证. Reac ...

  9. Spring Boot特性

    2019独角兽企业重金招聘Python工程师标准>>> SpringApplication SpringApplication类提供了一种从main()方法启动Spring应用的便捷 ...

最新文章

  1. 在组策略中通过.zap的形式发布软件!
  2. 扎心!8.5亿网民 超七成月收入5000元以下,网友:这数据很真实
  3. sar分辨率公式_对PAR DAR SAR的理解
  4. IntelliJ IDEA导入maven项目
  5. 终于把W32.Spybot.Worm给消灭了(这个标题不能用了)
  6. php导出excel出现乱码,完美解决phpexcel导出到xls文件出现乱码的问题
  7. 安卓计步器是如何实现计步的
  8. Python多字段排序之cmp_to_key详解
  9. AUTOSAR —— CAN网络管理(CanNm)
  10. 广袤之中:沿着克拉克三大定律,读懂华为的最深期待
  11. 轮廓检测论文解读 | 整体嵌套边缘检测HED | CVPR | 2015
  12. 三极管在ad中的原理图库_Altium Designer原理图元器件库详细说明
  13. 期货大佬给交易者的交易箴言,值得珍藏品读!
  14. 青岛科技大学计算机一级报名,2019年3月山东青岛科技大学计算机等级考试报名通知...
  15. PHP爆绝对路径方法总结帖
  16. ProSpec 胶质源性神经营养因子人重组说明书
  17. 【图像处理】记一次粗心:未加载opencv_world300d.dll
  18. 自动生成用于测试和评估自动驾驶汽车的各种挑战性场景
  19. 内边距(padding)
  20. 二开版优化新紫色UI云开发新款壁纸小程序源码支持用户投稿在线审核

热门文章

  1. 鸟哥,png图片压缩
  2. mysql 加写锁_MySQL中的读锁和写锁
  3. 华为手机升级到鸿蒙的条件,结果水落石出!华为手机升级鸿蒙系统,只需要满足一个条件...
  4. win10 android 比较,硬件 篇三:安卓ios和win10三大平台几款无线耳机使用体验随写 非评测 电音向...
  5. 服务器项目pdf,服务器等设备清单.pdf
  6. Domino 渗透相关
  7. 软件设计模式-中介者模式
  8. dtrace-oracle-vage :吕海波
  9. 信息学奥赛一本通1104年龄与疾病
  10. 临床预测模型评鉴(PMID: 32695060)