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 属性。

Thanks a lot.