升级到Spring Framework 5.x.须知

一、spring5.0 做了哪些改变

首先我们先看一下官网文档《升级到Spring Framework 5.x.》.细节已经讲的很清楚,我们再做一些分析。

spring5.0 新的改变

  • Spring Framework 5.0需要JDK 8(Java SE 8)或更高版本,因为它的整个代码库现在基于Java 8源代码级别

  • 为Spring WebFlux添加了Netty 4.1和Undertow 1.4

用spring5 以后哪些不兼容的组件

删除了的包,类和方法

  • 包beans.factory.access(BeanFactoryLocator机制)。

    • 包括SpringBeanAutowiringInterceptor基于这种静态共享上下文的EJB3。最好通过CDI集成Spring后端。
  • 包jdbc.support.nativejdbc(NativeJdbcExtractor机制)。

    • Connection.unwrapJDBC中的本机机制所取代。目前,即使针对Oracle JDBC驱动程序,也几乎不需要解包。
  • mock.staticmock从spring-aspects`模块中删除。

    • 不再支持AnnotationDrivenStaticEntityMockingControl了。
  • web.view.tiles2orm.hibernate3/hibernate4丢弃。

    • 最低要求:现在为Tiles 3和Hibernate 5。

放弃了支持的三方包

Spring Framework不再支持:Portlet,Velocity,JasperReports,XMLBeans,JDO,Guava(由Caffeine支持取代)。如果这些对您的项目至关重要,那么您应该继续使用Spring Framework 4.3.x(支持到2020年)。或者,您可以在自己的项目中创建自定义适配器类(可能从Spring Framework 4.x派生)

二、spring5.1 做了哪些改变

对于JDK 11的支持 ,ASM和CGLIB做了以及的升级,以支持最新的这些jdk

三、我们该怎么办?

我的一个观点是积极拥抱新的spring5包,尤其是新项目。

  • 首先新的特性是一个框架资源投入的方向

  • 你会使用到webflux等一些等的异步特性;

  • 强制使用用java8以上,可以体验一些lamba表达式语法糖等功能。理解在java一直被吐槽代码太多的情况下,jdk对于动态语言的一些学习吸收。

    反过来思考,一些老项目升级成新版本以后,会发现有一些jdk删除的包和不支持的包。这个比较麻烦,一个老的项目可以需要业务全面回归来应对框架的升级。

​ 对于dubbo项目来说,我的观点是在一个比较激进的新的分支上升级到spring5,比如正在开发的异步版本3.0开始使用,这样可以充分测试一些新的feature,早点发现问题。

感谢您的阅读,本文由 王欣的博客 版权所有。如若转载,请注明出处:王欣的博客(https://wangxin.io/2018/09/05/framework/spring5_new_features/
Java lambda表达式(二)——利用java8的CompletableFuture异步并行操作
血的教训:线程池定义一定要全局化,共享使用