# Spring 5 的新功能和增强功能

> 原文： [https://howtodoinjava.com/spring5/spring5-features-and-enhancements/](https://howtodoinjava.com/spring5/spring5-features-and-enhancements/)

**Spring 5** 是第一个主要版本，距 Spring Framework 4.0 差不多四年了。 在此期间，大多数增强功能都是在 [Spring boot](https://howtodoinjava.com/spring/spring-boot/spring-boot-tutorial-with-hello-world-example/) 项目中完成的。 在本文中，我们将快速介绍 Spring 5.0 发行版中的一些令人兴奋的功能。

## 基准升级

要构建和运行 Spring 5 应用程序，您将需要最低 [JDK 8](https://howtodoinjava.com/java-8-tutorial/) 和 Java EE7。不再支持以前的 JDK 和 Java EE 版本。 详细来说，Java EE 7 包括：

*   Servlet 3.1
*   [JMS 2.0](https://howtodoinjava.com/spring/spring-boot/spring-boot-jmstemplate-activemq/)
*   [JPA 2.1](https://howtodoinjava.com/jpa-tutorials-and-examples/)
*   [JAX-RS 2.0](https://restfulapi.net/create-rest-apis-with-jax-rs-2-0/)
*   [Bean 验证 1.1](https://howtodoinjava.com/spring/spring-mvc/spring-bean-validation-example-with-jsr-303-annotations/)

与 Java 基准相似，许多其他框架的基准也有所变化。 例如

*   Hibernate 5
*   Jackson 2.6
*   EhCache 2.10
*   [JUnit 5](https://howtodoinjava.com/junit-5-tutorial/)
*   Tiles  3

另外，记下各种服务器的最低支持版本。

*   Tomcat 8.5 以上
*   Jetty 9.4+
*   WildFly 10+
*   Netty 4.1+
*   Undertow 1.4 以上

## JDK 9 运行时兼容性

Spring 5 发行版与 [JDK 9](https://howtodoinjava.com/java9/java9-new-features-enhancements/) 发行日期非常吻合。 我们的目标是让 Spring Framework 5.0 在 JDK 9 的 GA 之后立即成为 GA。 Spring 5.0 的候选版本已经在类路径以及 [modulepath](https://howtodoinjava.com/java9/java-9-modules-tutorial/) 上支持 Java 9。

您可以期望在 GA 版本中获得良好的 JDK 9 支持。

## JDK 8 功能的用法

在 Spring 4.3 之前，JDK 的基线版本为 6。因此 Spring 4 必须支持 Java 6、7 和 8。为了保持向后兼容性，Spring 框架并没有采用 Java 8 本身带来的许多新功能，例如。 [Lambda 编程](https://howtodoinjava.com/java8/complete-lambda-expressions-tutorial-in-java/)。

Spring 5 具有基准版本 8，因此它也使用 Java 8 和 9 的许多新功能。 例如

1.  Spring 核心接口中的 Java 8 [默认方法](https://howtodoinjava.com/java8/default-methods-in-java-8/)
2.  基于 Java 8 反射增强的内部代码改进
3.  在框架代码中使用功能编程-lambda 和[流](https://howtodoinjava.com/java8/java-8-tutorial-streams-by-examples/)

## 响应式编程支持

[响应式编程](https://howtodoinjava.com/rxjava/rxjava-2-0-tutorial/)是 Spring Framework 5.0 的最重要功能之一。 响应式编程提供了另一种编程风格，专注于构建对事件做出反应的应用程序。 Spring Framework 5 包含响应式流（用于定义响应式 API 的中性语言尝试）和 [Reactor](https://projectreactor.io/) （由 Spring Pivotal 团队提供的响应式流的 Java 实现），用于其自身的响应式使用以及其许多核心 API。

Spring Web Reactive 位于新的`spring-web-reactive`模块中，位于`spring-webmvc`模块中现有（流行的！）Spring Web MVC 的旁边。 请注意，在 Spring 5 中，传统的 Spring MVC 可以在任何 Servlet 3.1 堆栈上运行，包括 Java EE 7 服务器。

## 功能性网络框架

在响应功能的基础上，Spring 5 还提供了一个功能性的 Web 框架。 它提供了使用功能性编程风格定义端点的功能。 该框架引入了两个基本组件：`HandlerFunction`和`RouterFunction`。

`HandlerFunction`代表处理传入请求并生成响应的功能。 `RouterFunction`可以替代`@RequestMapping`注解。 用于将传入的请求路由到处理函数。 例如

```java
RouterFunction<String> route =
    route(GET("/hello-world"),
    request -> Response.ok().body(fromObject("Hello World")));

```

## Kotlin 支持

[Kotlin](https://kotlinlang.org/) 是一种静态类型的 JVM 语言，它使代码具有表达力，简短性和可读性。 Spring framework 5.0 对 Kotlin 有很好的支持。

## 功能移除

随着 Java，Java EE 和其他一些框架的基准版本的增加，Spring Framework 5 删除了对一些框架的支持。 例如

*   Portlet
*   Velocity
*   JasperReports
*   XMLBeans
*   JDO
*   Guava

学习愉快！

参考：[链接](https://github.com/spring-projects/spring-framework/wiki/What's-New-in-the-Spring-Framework#whats-new-in-spring-framework-5x)