Spring5 新特性
Spring 5于2017年底发布.Spring 5为Spring框架带来了大量更新。Spring 4于2013年发布,因此每个人都期待对该框架进行重大改革。我很高兴看到Spring框架中的新功能。
目录[ 隐藏 ]
Spring5 功能
Spring 5的功能大致可分为以下几类:
- Java Baseline支持
- 核心API增强功能
- Spring Web MVC增强功能
- Spring WebFlux
- 使用Kotlin支持进行功能编程
- 测试改进
- 弃用的支持和已删除的包

Java Baseline支持
- Spring 5在Java 8上运行,因此spring代码可以利用lambda表达式来提高代码的可读性。
- Spring 5也支持java 9,因此我们也可以在基于模块的架构上创建我们的应用程序。
- Spring 5支持Java EE 7,并且与Java EE 8兼容。所以我们可以在我们的应用程序中使用Servlet 4.0,Bean Validation 2.0,JPA 2.2。我们也可以使用它们的旧版本,即Servlet 3.1,Bean Validation 1.1,JPA 2.1。
- Spring 5应用程序首选服务器版本是Tomcat 8.5 +,Jetty 9.4+和WildFly 10+。
我真的很喜欢那个春天5试图赶上不同技术的最新版本。
核心API增强功能
- 包级别的非null API声明。可以为Nullable参数,字段和返回值显式注释
@Nullable注释。 - 文件操作通过NIO 2流执行,即没有FileInput / Output Stream。对于基于文件的应用程序,这是一个很好的增强和性能提升
- Spring Framework 5.0附带了自己的Commons Logging桥接器;
spring-jcl而不是标准的Commons Logging。 - 支持通过索引文件“META-INF / spring.components”而不是类路径扫描提供弹簧组件信息。如果您有一个大型弹簧项目和许多弹簧组件,这将大大缩短启动时间。对于开发人员来说也会更好,因为我们可以直接查看指定的文件来找出应用程序入口点,而不是搜索整个类路径文件。
Spring Web MVC增强功能
Spring MVC模块在使用最新的Java EE技术方面进行了重大改革。一些主要的改进是:
- Spring提供的
Filter实现中的完整Servlet 3.1签名支持。 - 支持
PushBuilderSpring MVC控制器方法中的Servlet 4.0 参数。 - 公共服务器上的Servlet 3.0多部分解析的MaxUploadSizeExceededException。
- 通过MediaTypeFactory委托统一支持常见媒体类型。
- 使用Kotlin,Lombok,@ ConstructorProperties 与不可变对象进行数据绑定。
- 支持JSON绑定API作为Jackson和GSON 的替代品。
- 支持Reactor 3.1 Flux和Mono以及RxJava 1.3和2.1作为Spring MVC控制器方法的返回值。
- 支持
ResponseStatusException作为程序替代@ResponseStatus。
Spring WebFlux
Spring WebFlux是新模块,它是模块的替代品,spring-webmvc并建立在反应式框架之上。此模块用于创建基于事件循环执行模型的完全异步和非阻塞应用程序。
- Spring-core中的反应性基础设施,如编码器和解码器,用于编码和解码对象流。
- @Controller样式,基于注释的编程模型,类似于Spring MVC,但在WebFlux中支持,在反应堆栈上运行。
- 新的WebClient,具有用于HTTP调用的功能和反应API,与RestTemplate相当,但通过流畅的API,并且在基于WebFlux基础结构的非阻塞和流式方案中也非常出色。
使用Kotlin支持进行功能编程
Spring 5现在也支持Kotlin编程。这是支持函数式编程的重要一步,就像Java也在向函数式编程迈进一样。
- 支持Null-Safe API
- 支持带有可选参数和默认值的Kotlin不可变类。
- 利用Kotlin reified类型参数来避免在各种API(如RestTemplate或WebFlux API)中明确指定用于序列化/反序列化的Class。
- 支持带有可选参数的Kotlin自动装配构造函数。
- @ Autowired / @Inject和@RequestParam / @RequestHeader / etc注释的Kotlin零安全支持。
测试改进
- 支持JUnit 5
- 支持Spring TestContext Framework中的并行测试执行
弃用的支持和已删除的包
- 删除的包
beans.factory.access,jdbc.support.nativejdbc,mock.staticmock从spring-aspects模块。 - 删除了包
web.view.tiles2并orm.hibernate3/hibernate4丢弃了。这意味着如果您计划使用Spring 5,您还必须使用Hibernate 5。 - 不再支持旧技术Portlet,Velocity,JasperReports,XMLBeans,JDO,Guava。如果您正在使用其中任何一种,那么要么迁移到其他技术,要么继续使用Spring 4。
这就是对Spring 5功能的快速概述。

721

被折叠的 条评论
为什么被折叠?



