美国上市公司,专注Java培训21年

Spring Boot 2.0.0 终于正式发布,重大修订版本


北京时间 2018 年 3 月 1 日早上,如约发布的 Spring Boot 2.0 在同步至 Maven 仓库时出现问题,导致在 GitHub 上发布的 v2.0.0.RELEASE 被撤回。目前问题已修复,官方重新发布了 Spring Boot 2.0,并提供了 Maven 中央仓库地址。

Spring Boot 2.0.0 终于正式发布

使用 Spring Boot 2.0.0 GA

Maven

Spring Boot 2.0.0 终于正式发布

Gradle

Spring Boot 2.0.0 终于正式发布

而 Spring Boot 2.0.1 也被标记为 SNAPSHOT 状态

Maven

Spring Boot 2.0.0 终于正式发布

Gradle

Spring Boot 2.0.0 终于正式发布

官方表示,这个版本经历了 17 个月的开发,有 215 个不同的使用者提供了超过 6800 次的提交。非常感谢提供贡献的每一位用户,并感谢所有对这些里程碑版本提供重要反馈的早期采用者。

该版本是自 4 年前发布 Spring Boot 1.0 以来的第一次重大修订,也是首个提供对 Spring Framework 5.0 支持的 GA 稳定版本。

新版本值得关注的亮点:

基于 Java 8,支持 Java 9

支持 Quartz 调度程序

大大简化了安全自动配置

支持嵌入式 Netty

Tomcat, Undertow 和 Jetty 均已支持 HTTP/2

全新的执行器架构,支持 Spring MVC, WebFlux 和 Jersey

使用 Spring WebFlux/WebFlux.fn 提供响应式 Web 编程支持

用于响应式 Spring Data Cassandra, MongoDB, Couchbase 和 Redis 的自动化配置和启动器 POM

引入对 Kotlin 1.2.x 的支持,并提供了一个 runApplication 函数,让你通过惯用的 Kotlin 来运行 Spring Boot 应用程序。更多信息请参阅参考文档中对 Kotlin 的支持部分

启动时的 ASCII 图像 Spring Boot banner 现已支持 GIF

Spring Boot 2 新特性解读

根据我们此前的报道,Spring Boot 2 最大的变化主要集中在以下几方面:

⊙Spring Boot 2 基于 Spring Framework 5,而整个 Spring Framework 5.0 代码库运行于 Java 8 之上。所以,Spring Boot 2 要求的 JDK 版本最低也是 Java 8,同时也已正式支持 Java 9(这里有一份使用 Java 9 运行 Spring Boot 的文档 #/translate/spring-boot-with-java9)

与 Spring Boot 1 的差别在于,许多配置属性已被重命名或被删除,因此由 Spring Boot 1 迁移至 Spring Boot 2 需要注意一些配置属性

Spring Boot 为 Java 应用程序引入的关键创新是将 Servlet 容器嵌入到一个可执行的 jar 包中,这个 jar 包会打包整个应用。Spring Boot 还提供了 Tomcat、Undertow 和 Jetty 作为可选的方案

在此前发布的 RC 版本中,Tomcat、Undertow 和 Jetty 均已支持 HTTP/2,并通过 Conscrypt 库提供对原生 TLS 的支持。这对 Spring Boot 的默认服务器 Tomcat 8.5.x 来说意义重大,如果 libtcnative 库及其依赖项安装在主机操作系统上,则只支持 HTTP/2。

监控方面,Spring Boot 2 增强了对 Micrometer 的集成。RabbitMQ、JVM 线程和垃圾收集指标会自动进行 instrument 监控,异步控制器(controller)也会自动添加到监控里。通过集成,还可以对 InfluxDB 服务器进行监控。

数据方面,Spring Boot 2 让你能够以更加细粒度的方式自定义 Hibernate 属性。另外,还可以暴露 RedisCacheConfiguration,从而控制 RedisCacheManager。Flyway 和 Liquibase 配置也更灵活。

此外,Spring Boot 2 也大大增强了对 GSON 的支持,还包含了改进的 actuator JSON 架构。

还有一个值得关注的变更就是 Spring Boot banner —— 即启动时的 ASCII 图像,它被开发团队广泛应用于展示自己的应用品牌信息。在 Spring Boot 2 中,现已支持动画 GIF。

值得注意的是,在 Spring Boot 2.0 中,许多配置属性已被重命名或被删除,为了方便升级,Spring Boot 发布了一个新的 spring-boot-properties-migrator 模块。只要将其作为依赖添加到项目中,它不仅会分析应用程序的环境并在启动时打印诊断信息,而且还会在运行时阶段为项目临时将属性迁移至新的配置方式。

有关 Spring Boot 2.0 更详细的迁移指南,可以保持关注我们正在翻译的官方文档:

#/translate/spring-boot-2-0-migration-guide

欢迎有兴趣的开发者一起参与翻译~!

下面我们来看看 Spring Boot 2 值得关注的新特性。

支持 Java 9

Spring Boot 2 最值得期待的新功能莫过于对 Java 9 的正式支持,现在要求最低的 JDK 版本是 Java 8,这意味着不可以使用 JDK 7 或更旧的版本运行 Spring Boot 2。

Spring Framework

Spring Framework 5.0 现已与 Spring Boot 集成。Spring Framework 5.0 一些有趣的功能:

支持 JDK 9 和 Java EE 8 级别的 API(如 Servlet 4.0)

与 Reactor 3.1, JUnit 5, 和 Kotlin 语言的全面集成

带来了许多函数式 API 变体 (functional API variants)

响应式堆栈 Web 框架 —— Spring WebFlux

完全支持 JUnit 5 Jupiter,因此可以在 JUnit 5 中编写测试

添加对 @Nullable 和 @NotNull 注解的支持,以在编译时而不是运行时处理空指针异常

Spring Security

虽然 Spring Security 并非是 Spring Boot 的正式组成部分,但这里仍值得一提,因为它能与 Spring Framework 5.0 很好地搭配使用。最新的 Spring Security 5 提供了超过 400 多项的功能增强和错误修复。有以下值得关注的新功能:

用户可通过 OAuth 2.0 provider 使用现有帐户进行身份验证

与 Spring Framework 5 一样,Spring Security 5 也添加了对响应式编程的支持

以更现代的方式完成对密码的编码

@ConditionalOnBean

从 Spring Boot 1.x 迁移到 2.x 时需要考虑的重要一点是,当确定条件是否满足时,@ConditionalOnBean 注解现在使用逻辑 AND 而不是逻辑 OR 来表示。

对 WebFlux 和 WebFlux.fn 的支持

Spring Boot 2.0 为响应式的 Spring Web 框架提供了一个新的启动器 — spring-boot-starter-webflux,spring-boot-starter-webflux 本身包含 WebFlux,再加上 Reactor Netty 作为默认的 Web 引擎(spring-boot-starter-reactor-netty)。

可以使用 @WebFluxTest 来测试响应式的控制器,它为 Spring MVC 提供了类似于 @WebMvcTest 的支持,而且 WebTestClient 是自动配置的。

最低支持版本的更新

Jetty 9.4

Tomcat 8.5

Hibernate 5.2

Gradle 3.4

Thymeleaf

Spring Boot 2 另一个值得关注的新特性是现已正式支持 Thymeleaf 3,包含了对 Thymeleaf 和 Spring Security Thymeleaf 依赖关系的更新。Thymeleaf 3 中值得关注的变化:

由于使用了新的解析系统,Thymeleaf 不再基于 XML

引入新的文本模板模式,它给 Thymeleaf 提供了输出 CSS,Javascript 和纯文本的功能

重写了引擎,性能显著提升

最后的话

Spring Boot 2 是一个重大版本,以下新增的特性或许是你选择升级的理由:

支持 Java 9

对响应式应用更好的支持

支持 Thymeleaf 3

如果你能从这些变化中受益,不妨考虑选择升级。另外,Spring Boot 2 还包含许多错误修复和性能改进,这些都是升级的重要原因。

更多内容可以查看发布说明:

https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-2.0-Release-Notes

使用 Java 9 运行 Spring Boot

如果你希望使用 Java 9 运行 Spring Boot 应用程序,这篇文章将会对你有所帮助。

注意:问题跟踪器包含了所有未解决的关于 Java 9 的已知问题,所以在报告新问题前,请查看该列表。

要求

Spring Boot 2.0 是首个支持 Java 9 的版本(同时支持 Java 8)。如果你正在你使用 1.5.0 并希望使用 Java 9,你应该升级到 2.0 版本,官方表示目前没有计划在 Spring Boot 1.5.x 系列上支持 Java 9。

AspectJ

使用 Java 9,如果你需要编译 JDK 中的类,则需要使用 AspectJ 1.9(目前处于 RC 阶段)。这是一个临时的解决方案,因为 Aspect 1.9 GA 即将推出,而且 Spring Boot 也将升级到该版本。在大多数情况下,使用 AspectJ 1.8(Spring Boot snapshot 中的默认版本),Spring AOP 也能正常运行。

JAXB

升级时可能会遇到以下情况:

Spring Boot 2.0.0 终于正式发布

Hibernate 通常需要的 JAXB 不再默认提供。你需要为你的项目添加以下依赖:

Spring Boot 2.0.0 终于正式发布

或者你可以添加 java.xml.bind 模块以使用 Java 9 恢复该功能。

Testing

使用 Java 9 进行测试时,最新的 maven-surefire-plugin 版本(2.20.1)引入了回归错误,你可以降级到 2.20.0,或显式添加一个模块以防止引入 java.se.ee:

Spring Boot 2.0.0 终于正式发布

已知的限制

下面这些库尚未完全支持 Java 9:

Apache Cassandra,详情请查看 #10453

除非以打包的 war 形式运行,否则 JSP TLD 会附带有嵌入式的 Tomcat,详情请查看 #10456

感谢大家阅读由Java教程栏目分享的“Spring Boot 2.0.0 终于正式发布,重大修订版本”希望对大家有所帮助,更多精彩内容请关注Java培训官网

免责声明:本文由小编转载自网络,旨在分享提供阅读,版权归原作者所有,如有侵权请联系我们进行删除


【免责声明】本文部分系转载,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责,如涉及作品内容、版权和其它问题,请在30日内与我们联系,我们会予以重改或删除相关文章,以保证您的权益!

Java开发高端课程免费试学

大咖讲师+项目实战全面提升你的职场竞争力

  • 海量实战教程
  • 1V1答疑解惑
  • 行业动态分析
  • 大神学习路径图

相关推荐

更多
  • java语言中,char 类型变量是否能保存一个汉字?
    java语言中,char 类型变量是否能保存一个汉字?
    在 Java 语言中,可以使用 char 类型的变量来存储单个的字符,请问是否能用 char 类型的变量来存储一个汉字呢? 详情>>

    2015-10-15

  • 有史以来最牛的一张程序员职业路线图!
    有史以来最牛的一张程序员职业路线图!
    最近在琢磨程序员到底路在何方,经过不断的自虐和代入,终于在迷雾森林中得图一张,看之豁然开朗。独乐乐不如众乐乐,share了: 详情>>

    2018-05-22

  • java中变量和常量有什么区别?
    java中变量和常量有什么区别?
    在使用 Java 语言进行程序设计时,经常需要用到常量和变量来存储信息。请简单叙述变量和常量有什么区别? 详情>>

    2015-10-15

  • short 和 char 类型的取值范围各是多少?
    short 和 char 类型的取值范围各是多少?
    在使用 Java 语言进行程序设计时,经常需要使用 short 型和 char 型存储数值,请简述short 型和 char 型的取值范围各是多少? 详情>>

    2015-10-15

  • Java开班时间

    收起