\

看新闻很累?看技术新闻更累?试试下载InfoQ手机客户端,每天上下班路上听新闻,有趣还有料!

\

\\

广受期待的Spring Boot 2.0近期由Spring的托管企业Pivotal发布。这是Spring Boot自2014年6月推出以来的首次版本升级,也是自2017年2月发布广为使用的1.5版本后的首次发布。

\\

Spring Boot面向技术“入门者”,对配置结构和自动配置给出了一些强烈推荐(opinionated)的条条框框,并基于注入(injection)默认设置为Spring提供了强大的生命周期。它有助于开发人员在保持重叠传递依赖一致性的同时,轻松地启动包含多种技术选择的新应用。

\\

Spring Boot Initializr自推出近四年来,已经生成了数百万个项目。这使得Spring Boot成为一种在整个技术范围内初始化JVM应用的标准。

\\

受支持的Spring Boot技术已分门别类为Core、Web、模板引擎、SQL、NoSQL、Messaging、一些基于云的丰富类别、Pivotal Cloud Foundry、Azure、Social、IO和Ops等。这些类别涵盖了当代应用中使用的大部分流行框架。

\\

针对新发布的Spring Boot,InfoQ采访了项目牵头人Phil Webb。

\\

InfoQ:开门见山。Spring Boot自推出以来,已成为Spring产品组合中最重要的平台之一。Spring Boot 2.0将给出哪些特性?

\\

\

Webb: 的确如此。Spring Boot 2.0具有两个主要目标。第一个目标是支持响应式编程(非阻塞应用。这类应用是异步的、事件驱动的,并且扩展所需的线程数量少)。我们为所有支持响应式编程的Spring项目提供了自动配置。其中包括Spring Framework 5.0附带的Spring WebFlux。现在也首次支持选择Netty作为嵌入服务器。

\\

第二个目标相对不是那么引人关注。为确保能对未来的构建打下一个很好的基础,我们正试图完善我们在1.x系列中做出的一些决策。因此在这个版本中,我们做了很多的清理和重构工作。

\

\\

InfoQ: 有哪些特性是我们已在1.5版中习惯的,但是在未来版本中需要做出改变的?

\\

\

Webb: 对于大多数现有用户来说,并没有什么重大变化。我们仍然提供对配置的约定,仍然根据类路径的内容自动配置Spring,依然对开发人员自定义的Bean提供重试补偿机制(backoff)。开发人员仍然可自行配置属性文件、yaml文件或环境变量。

\\

人们可能会注意到,具有差异的特性主要是安全配置和OAuth。对于OAuth功能,现在已由一个专门的Spring Security项目处理。

\

\\

InfoQ:新版本是否向后兼容?

\\

\

Webb: 版本升级后,对开发人员最明显的影响在于属性文件。出于提高一致性的考虑,我们重命名了不少属性。如果开发人员正在迁移现有项目,并使用了良好支持Spring Boot的IDE,那么在尝试使用旧属性名称时会收到警告。我们提供了一个十分有用的迁移器jar包。它可以将旧名称映射到新名称,使得开发人员有机会逐步重命名事物。

\\

此外,项目所需的更改量取决于该项目与Spring Boot的集成程度。例如,如果开发人员使用了标准的自动配置功能,并使用了一些属性自定义事物,那么确实不应该存在任何迁移上的痛苦。如果项目更为复杂,可能需要做一些代码迁移。对于用户可接触到的特性而言,最大改进是对嵌入Servlet容器、执行器端点(Actuator Endpoint)和一些度量的支持。特别是执行器端点,该特性在2.0中完全迥异。但如果开发人员需要花一些时间做迁移,那么可以从Jersey和WebFlux获得免费支持。在迁移指南中,详细地介绍了该迁移器jar包的相关信息。

\

\\

InfoQ: 旧的属性是被弃用了,还是不再支持?

\\

\

Webb: 旧属性名称仅在使用迁移器项目时受支持。这为我们提供了一种两全其美的做法,即我们可以在重命名属性的同时,保持自身代码库的清洁。但人们依然需要一个迁移路径。这意味着,一旦完成迁移并删除了迁移者,开发人员就不再需要为检查旧名称付出性能上的损失。

\

\\

InfoQ:新版本是否需要Spring Framework 5.0支持?

\\

\

Webb: 是的。我们一直都需要最新的Spring Framework版本,Spring Boot 2.0也不例外。我们期待Spring Framework 5.0.3或更高版本。

\

\\

InfoQ:最低支持的Java版本是什么?

\\

\

Webb: 当前,最低要求版本是Java 8。我们大量地使用了Java 8的特性和类。因此,Spring Boot 2.0无法在更早期的Java版本上运行。

\

\\

InfoQ:是否完全支持Java 9?

\\

\

Webb: Spring Boot 2.0完成支持Java 9。我们实现了持续集成,确保Spring Boot可使用Java 9构建并运行所有例子代码。在Wiki页面https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-with-Java-9中提供了更多细节。

\

\\

InfoQ:是否完全支持HTTP/2?

\\

\

Webb: 开发人员可以通过Jetty、Undertow或Tomcat使用HTTP/2,细节参见参考文档。简而言之,只要在属性文件中添加server.http2.enabled=true,并配置SSL即可。我们并不支h2c,即明文(cleartext)HTTP/2协议。

\

\\

InfoQ:这是否意味着你们将继续支持一些广为使用的应用服务器,诸如Tomcat、Jetty和Thymeleaf?

\\

\

Webb: 我们继续为嵌入的Tomcat 8.5、etty 9.4和Undertow 1.4提供支持。对于WebFlux应用,开发人员也可以使用嵌入的Netty 4.1。还可以将Spring Boot应用部署到应用服务器,而且我们也会针对TomEE、Wildfly、WebSphere Liberty Profile和Glassfish测试每个构建。

\\

受支持的Thymeleaf最低版本是3.0。Thymeleaf将继续提供出色的Spring支持,包括针对响应式应用的引擎节流(engine throttling)。

\

\\

InfoQ: Spring Boot新版本的发布,是否会与Oracle新实施的每6个月推出一个新版本的策略保持同步?

\\

\

Webb: Spring Boot 2.0采用特性驱动版本。除非我们实现了完整的响应式特性,否则不能称新版本为完成。展望未来,此后推出的几个版本将更加迭代,并且更易于根据日期推出新版本。话虽然这么说,但是Spring Boot的发布并不会完全跟随Oracle的发布节奏。我们计划与Spring Framework的进展亦步亦趋,将在其发布之后数月内发布。

\

\\

InfoQ:我们在多个新项目中都看见了Spring Boot的应用。Spring Boot的采纳情况如何?

\\

\

Webb: 就我们所能够追踪的一些指标来看,我们对Spring Boot的采纳率非常满意。当然,作为一个开源项目,我们很难得到一个确切的数字。人们只要认为合适,就可以自由地使用该软件,并没有强制要求他们将使用信息反馈给我们。

\\

我们曾使用共享Maven下载量为指标。最近我们更喜欢使用从Spring Initializr(start.spring.io)生成的项目数量。虽然当前采纳的增长率随时间的推移而自然趋于平缓,但就2017年而言,已经产生了470万的Initalizr项目,这比2016年增长了256%。Maven的下载量的原始数据明显更高,增长了300%。我很高兴看到这两个增长曲线间具有很好的相关性。

\\

但是我最喜欢的指标是对项目的反馈贡献数。我很高兴看到现在项目代码库具有超过400位贡献者。

\\

一些公开提供的数据看上去也十分不错。Spring Boot就GitHub的Java项目的fork数而言排行第一(排名第二的是Spring框架),就GitHub的Java项目的星标数而言排行第七。

\

\\

InfoQ:终止支持版本1.x是否已经提上日程?

\\

\

Webb: 通常,Spring项目的主版本会提供三年的支持,小版本提供12个月的支持。鉴于Spring Boot 1.0是2014年发布的,1.5版在2017年早期发布,已经接近常规支持协议的上限了。我们完全理解人们需要一定升级的时间,这样我们规划至少对1.5版提供支持到明年。

\

\\

InfoQ: 能否给出一个以前版本并不提供的响应式支持的例子吗?是否需要使用WebFlux和Reactor,才能从响应式中受益?还是具体实现自然会为用户提供响应式的好处?如果是这样,如何实现?

\\

\

Webb: 我认为Spring在反应式编程上具有相当独特的地位。虽然我们可以一头扎入其中,并完全采用响应式技术栈,但也可以从更小处着手。实际上,开发人员可以从基于Servlet的MVC应用返回响应式类型(Flux和Mono),这将会工作。虽然开发人员从中并不能获得任何好处,但是他们不必完全转向新的体系结构,就可以有机会尝试响应式API。Spring Framework 5.0还引入了一个新的WebClient API。该API提供了一种非常自然的调用远程Web服务的方式。该API大量地使用了Reactor类型,使开发人员可以用十分自然的方式编写操作。

\\

还应该看到,除了传统的同步阻塞模型之外,我们还提供了响应式编程选项。团队正致力于为开发人员提供对两种模式的选择,并将继续在这两个方面上投入精力。

\

\\

InfoQ: 除了Java之外,Spring Boot还原生支持哪些JVM语言?

\\

\

Webb: 开发人员可以使用几乎所有具有良好Java互操作性的JVM语言编写Spring Boot应用。如果开发人员想使用除Java以外的其它一些开发方式,Groovy和Kotlin无疑也是很好的选择。

\

\\

InfoQ:Python的使用日益广泛。Spring团队是否也对Python平台做了一些工作?

\\

\

Webb: 我并不了解有Spring项目正在使用Python。Spring显然是基于多年开发工作的支持,所以我们基于JVM语言是完全合情合理的。项目近期对另一种语言Kotlin做了一些投资。Spring框架和Spring Boot都具有Kotlin扩展,这些扩展提供了一流的开箱即可用的Kotlin体验。

\

\\

InfoQ:您提及了在安全上的一些改进。Spring Boot是否会使用去年新推出的Spring Security 5.0?

\\

\

Webb: 是的。Spring Security 5.0是Spring Boot 2.0的最小需求。

\

\\

InfoQ: 您能介绍一下对于安全所做的一些特定改进吗?

\\

\

Webb: 为支持响应式编程,Spring Security本身就给出了一整套新的API。如果开发人员熟悉现有的Spring Security概念,那么相应的响应式概念也非常易于上手。

\\

在2.0版中,Spring Boot安全配置也得到了简化。并且为了实现更简化的模型,移除了1.5版支持的一些较为复杂的用户化设置。在此博客帖子中详细解释了上述改进的合理之处。

\

\\

InfoQ: 使用Micrometer度量是一个新的做法,还是内建的?是否对JMX可用?

\\

\

Webb: 在2.0版中,Micrometer.io取代了之前Spring Boot本身提供的度量API。我们自动为各种技术提供工具,例如Spring MVC、RestTemplate、DataSource Pools等。使用Micrometer可以实现类似于Boot 1.5的方式,通过JMX和HTTP公开各种度量。真正令人兴奋之处在于,使用Micrometer还可以将度量提供到多种不同的后端。我们正在实现对导出度量到Atlas、Datadog、Ganglia、Graphite、New Relic、Prometheus、SignalFX和StatsD的支持。

\

\\

被访者简介

\\

Phil Webb供职于Pivotal,他当前是Spring Boot项目的牵头人。他来自于英国,但目前和他的家人一起生活在美国加州。

\\

查看英文原文: Spring Boot 2.0 Goes GA; Project Lead Phil Webb Speaks to InfoQ About the New Release

InfoQ就Spring Boot 2.0 GA版发布采访了项目牵头人Phil Webb相关推荐

  1. Payment Spring Boot 1.0.2.RELEASE 发布,接入微信支付分、先享卡功能

    Payment Spring Boot 是微信支付V3的Java实现,仅仅依赖Spring内置的一些类库.配置简单方便,可以让开发者快速为Spring Boot应用接入微信支付. 演示例子:https ...

  2. Spring Boot 2.0 版的开源项目云收藏来了!

    先给大家晒一下云收藏的几个数据,作为一个 Spring Boot 的开源项目(https://github.com/cloudfavorites/favorites-web)目前在 Github 上面 ...

  3. Spring Boot 3.0.0 发布第一个里程碑版本M1,你的 Java 升到 17 了吗?

    欢迎关注方志朋的博客,回复"666"获面试宝典 ‍ ‍文章来源:程序猿DD‍ ‍ 2022年1月20日,Spring官方发布了Spring Boot 3.0.0的第一个里程碑版本M ...

  4. 【译】Spring Boot 2.0 官方迁移指南

    前提 希望本文档将帮助您把应用程序迁移到 Spring Boot 2.0. 在你开始之前 首先,Spring Boot 2.0 需要 Java 8 或更高版本.不再支持 Java 6 和 7 了. 在 ...

  5. Spring Boot 2.0正式发布,升还是不升呢?

    Spring帝国 Spring几乎是每一位Java开发人员都耳熟能详的开发框架,不论您是一名初出茅庐的程序员还是经验丰富的老司机,都会对其有一定的了解或使用经验.在现代企业级应用架构中,Spring技 ...

  6. Java Spring Boot 2.0 实战之制作Docker镜像并推送到Docker Hub和阿里云仓库

    内容摘要:大规模集群快速部署Java应用,需要制作Docker镜像,本次课程详细介绍如何制作Java程序的Docker镜像文件,深入解析DockerFile核心参数,以及实践演练把我们制作的Docke ...

  7. Spring Boot 2.0 迁移指南

    点击上方"朱小厮的博客",选择"设为星标" 回复"666"获取新整理的1000+GB资料 前提 本文档将帮助您把应用程序迁移到 Spring ...

  8. (转)Spring Boot 2(一):【重磅】Spring Boot 2.0权威发布

    http://www.ityouknow.com/springboot/2018/03/01/spring-boot-2.0.html 就在今天Spring Boot2.0.0.RELEASE正式发布 ...

  9. Spring Boot 3.0.0-M1 Reference Documentation(Spring Boot中文参考文档) 9-16

    9. 数据 Spring Boot与多个数据技术集成,包括SQL和NoSQL. 9.1. SQL数据库 Spring Framework提供扩展支持用于与SQL数据工作,从使用JdbcTemplate ...

最新文章

  1. sources root pycharm 怎么设置_使用python语言开发ROOT之搭建环境方法探索
  2. Kong Api 网关使用 docker 部署
  3. Java的内存回收机制
  4. python处理excel-python处理Excel的简单示例
  5. java 自定义注解获取_Java自定义注解
  6. zbb20171108 tomcat 性能优化
  7. 硬件信息修改大师_零成本学习之单片机硬件开发(1)
  8. [tp5] thinkPHP5-渲染模板的方式
  9. 显示播客信息-bloginfo() 函数
  10. python之路---15 装饰器
  11. AcWing 285. 没有上司的舞会(树形DP)
  12. Meteor在手机上运行
  13. Http gzip 处理
  14. 什么是http及RFC?
  15. 赤壁之战(dp树状数组)
  16. 基于端到端深度学习方法的语音唤醒(Keyword Spotting)模型和论文
  17. 类似 MS Project 的项目管理工具有哪些
  18. SAP字段与表的对应关系
  19. ORACLE ERP 月结与年结处理流程
  20. NX二次开发-UFUN打开选择文件夹对话框UF_UI_create_filebox

热门文章

  1. Android开发自定义View之滑动按钮与自定义属性
  2. 使用RESIZE方法解决临时表空间(TEMP)过大问题
  3. 《iOS应用开发指南——使用HTML5、CSS3和JavaScript》——第1章 变小的巨大影响1.1 移动魔力和掌上电脑...
  4. POJ-10031004
  5. 你可以分配多大的内存
  6. js判断手指的上滑,下滑,左滑,右滑,事件监听
  7. 短视频直播一对一源码“皇冠”花落谁家
  8. php对象、面向对象
  9. 《微服务》九大特性重读笔记
  10. zabbix自定义用户key