Spring Boot 2.0 目前已在 GitHub 上发布了 v2.0.0.RELEASE 版本(https://github.com/spring-projects/spring-boot/releases/tag/v2.0.0.RELEASE) 不过还没同步至 Maven 中央仓库,请保持关注 https://projects.spring.io/spring-boot/ 。 Spring Boot 2 新特性概览:正式支持 Java 9 根据我们此前的报道,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 的文档 https://www.oschina.net/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 更详细的迁移指南,可以保持关注我们正在翻译的官方文档(https://www.oschina.net/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 还包含许多错误修复和性能改进,这些都是升级的重要原因。 Spring Boot 2.0 正式发布,正式支持 Java 9下载地址