《Spring5》于2017年末发行。spring5对Spring框架进行了大量的更新。Spring4是在2013年发布的,所以每个人都期待着对框架进行一次重大的改革。我很高兴看到Spring框架中的新特性。
目录
Spring5特色
Spring5的特性大致可分为以下几类:
- Java基线支持
- 核心API增强
- springwebmvc增强
- SpringWebFlux
- 支持Kotlin的函数式编程
- 测试改进
- 不推荐使用的支持和已删除的包
Java基线支持
- spring5运行在java8上,因此Spring代码可以利用lambda表达式来提高代码的可读性。
- spring5也支持java9,因此我们也可以在基于模块的体系结构上创建应用程序。
- Spring5支架Java EE 7也兼容Java EE 8. 所以我们可以用Servlet 4.0、Bean验证2.0、JPA2.2在我们的应用程序中。我们也可以使用他们的旧版本,即。Servlet3.1、Bean验证1.1、JPA2.1.
- spring5应用程序的首选服务器版本是tomcat8.5+、jetty9.4+和wildfly10+。
我真的很喜欢Spring5试图赶上不同技术的最新版本。
核心API增强
- 包级别的非null API声明。带注解的字段和返回值显式为空
@Nullable
annotation. - 文件操作通过nio2流执行,即没有文件输入/输出流。对于基于文件的应用程序来说,这是一个很好的增强和性能提升。
- Spring Framework5.0自带了自己的Commons日志桥;
spring-jcl
instead of standard Commons Logging. - 支持通过索引文件和META-INF提供spring组件信息/Spring组件和;而不是类路径扫描。如果您有一个大型spring项目和许多spring组件,这将大大缩短启动时间。这对开发人员也会更好,因为我们可以直接查看指定的文件来确定应用程序入口点,而不是搜索整个类路径文件。
springwebmvc增强
Spring Mvc模块在使用最新J2EE技术方面进行了重大改进。一些主要的增强功能包括:
- Spring提供了完整的Servlet3.1签名支持
Filter
implementations. - 支持Servlet 4.0
PushBuilder
argument in Spring MVC controller methods. - 公共服务器上Servlet 3.0多部分解析的MaxUploadSizeExceedeException。
- 通过MediaTypeFactory委托对常见媒体类型提供统一支持。
- 使用不可变对象的数据绑定科特林,龙目目,@constructor属性。
- 支持JSON绑定API作为杰克逊和格森的替代品。
- 反应堆3.1支架通量和单声道以及rxjava1.3和2.1作为Spring Mvc控制器方法的返回值。
- 支持
ResponseStatusException
as a programmatic alternative to@ResponseStatus
.
SpringWebFlux
Spring Web Flux是新的模块,它是spring-webmvc
module and built on reactive framework. This module is used to create fully asynchronous and non-blocking application built on event-loop execution model.
- spring核心中的反应式基础设施,如编码和解码对象流的编码器和解码器。
- @控制器风格,基于注解的编程模型,类似于Spring Mvc,但支持WebFlux,运行在反应式堆栈上。
- 新的WebClient具有一个用于HTTP调用的功能性和反应性API,与restemplate相当,但通过一个流畅的API,并且在基于WebFlux基础设施的非阻塞和流式场景中表现出色。
支持Kotlin的函数式编程
spring5现在也支持Kotlin编程。这是向支持函数式编程迈出的一大步,正如Java也在向函数式编程迈进一样。
- 支持空安全API
- 支持带有可选参数和默认值的Kotlin不可变类。
- 利用Kotlin具体化的类型参数避免显式地指定在各种api(如restemplate或WebFlux api)中用于序列化/反序列化的类。
- 支持带有可选参数的Kotlin autowired构造函数。
- 对@Autowired/@Inject和@RequestParam/@RequestHeader/etc注解的Kotlin null安全支持。
测试改进
- 支持JUnit5
- Spring Test Context框架中对并行测试执行的支持
不推荐使用的支持和已删除的包
- 删除的包
beans.factory.access
,jdbc.support.nativejdbc
,mock.staticmock
fromspring-aspects
module. - 删除的包
web.view.tiles2
andorm.hibernate3/hibernate4
dropped. This means if you are planning to use Spring 5, you will also have to use Hibernate 5. - 放弃对旧技术的支持Portlet、Velocity、JasperReports、XMLBeans、JDO、Guava. 如果您正在使用其中的任何一种,那么要么迁移到其他技术,要么继续使用spring4。
以上是对Spring5特性的快速概述。
参考文献:Spring GitHub文档