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