Spring Framework 4.0 迁移指南 (官方文档翻译)
看到Spring Framework4.0发布的消息,看了下new future,OneCoder很喜欢spring这种追“时髦”的风格,groovy脚本配置和Java8都支持了。顺便就翻译了一下官方的迁移指南。对一般使用来说,迁移没什么难度。替换依赖基本就可以了。
如果想要了解Sping Framework4.0.0的新特性,可以参考官方文档中的:New Features and Enhancements in Spring Framework 4.0
环境依赖要求:
Spring Framework4.0 需要Java SE 6 或以上的版本。(特别强调,最低版本实际为2008年发布的JDK6 update 10)。如果你从老版本的Java环境中迁移,你至少需要升级到最近的JDK6版本。推荐使用Java7和8,Java8 的稳定开发者预览状态会一致持续到2014年3月,OpenJDK8 进入最终版为止。
如果你在 Java EE 服务器部署Spring应用,你需要确认你的应用支持Java EE 6及以上的版本。这其中,特别需要注意的是满足JPA2.0和Servlet3.0规范。这个意思其实是说,你仍然可以把你的Spring Framework4.0的应用部署在只支持Servlet2.5规范的容器中。(如。Google App Engine, WebSphere 7, WebLogic 10.3),只是Spring4中一些基于Servlet3.0的特性将会无效。
依赖升级
Spring Framework4.0 声明了下列(可选)依赖的最低版本:
规范
- Servlet 3.0 (2.5 支持部署)
- JPA 2.0
- Bean Validation 1.0
- JSF 2.0
- JCache 1.0 PFD
- JDO 3.0
容器
- Tomcat 6.0.30
- Jetty 7.3
- JBoss AS 6.0
- GlassFish 3.1
- Oracle WebLogic 10.3.4 (with JPA 2.0 patch applied)
- IBM WebSphere 7.0.0.9 (with JPA 2.0 feature pack installed)
库
- Hibernate Validator 4.3
- Hibernate 3.6 (推荐4.2 )
- EhCache 2.1 (推荐2.5)
- <Quartz 1.8 (推荐2.2 )
- Jackson 1.8 (推荐2.2 )
- Groovy 1.8 (推荐2.2)
- Joda-Time 2.0 (推荐2.3)</span>
- Hessian 4.0
- XStream 1.4
- Apache POI 3.5
废弃的代码
下列的类和方法在Spring Framework4.0中被废弃。这些代码未来将会被移除,所以请检查javadoc并迁移至推荐的写法:
Jackson v1
所有Jackson v1支持的被废弃,以支持Jacksonv2:
- MappingJacksonMessageConverter
- JacksonObjectMapperFactoryBean
- MappingJacksonHttpMessageConverter
泛型:
GenericTypeResolver中的许多方法都被废弃了。新的ResolvableType类提供了对GeneriTypeResolver和GenericCollectionTypeResolver类中废弃方法的替换:
- GenericTypeResolver.getTargetType(MethodParameter methodParam)
- GenericTypeResolver.resolveType(Type genericType, Map<TypeVariable, Type> map)
- GenericTypeResolver.getTypeVariableMap(Class<?> clazz)
Burlap
Burlap不再在开发包下,并且将在以后完全不再提供支持。
- BurlapClientInterceptor
- BurlapExporter
- BurlapProxyFactoryBean
- BurlapServiceExporter
- SimpleBurlapServiceExporter
过时的JBoss类
下面的类由于不在当前JBoss释放版中而被废弃:</span></p>
- JBossWorkManagerTaskExecutor
- JBossWorkManagerUtils
其他废弃
- AbstractJaxWsServiceExporter.setWebServiceFeatures(Object[] webServiceFeatures)
- JaxWsPortClientInterceptor.setWebServiceFeatures(Object[] webServiceFeatures)</span>
- DefaultKeyGenerator
默认的缓存key生成器</span>
Spring使用的默认的KeyGenerator实现,由原来的DefaultKeyGenerator变为SimpleKeyGenerator。新的生成器不会再有key冲突并且基本不太可能使一个缓存的方法返回错误的结果。如果仍想使用之前的key策略,你需要配置使用废弃的DefaultKeyGenerator或者创建一个自定义的KeyGenerator实现。
MVC 命名空间
Spring MVC的命名空间XSD已经升级,以正确使用一对属性。当升级到spring-mvc-4.0.xsd后,你应该分别用 enable-matrix-variables 和ignore-default-model-on-redirect respectively 来替换原来的enableMatrixVariables 和ignoreDefaultModelOnRedirect 属性。