原來項目使用的是Spring3.x+jdk6,現今升級到了Spring4.x+jdk8,下面就我在升級過程中遇到的問題做個分享。
我升級到的Spring版本版本是:
1 <dependency> 2 <groupId>org.springframework</groupId> 3 <artifactId>spring-context</artifactId> 4 <version>4.3.14.RELEASE</version> 5 </dependency>
1.如果由使用到了SpringMVC的話,和json相關的依賴就需要升級了
1 <dependency> 2 <groupId>com.alibaba</groupId> 3 <artifactId>fastjson</artifactId> 4 <version>1.2.45</version> 5 </dependency>
增加依賴:
1 <dependency> 2 <groupId>com.fasterxml.jackson.core</groupId> 3 <artifactId>jackson-annotations</artifactId> 4 <version>2.9.3</version> 5 </dependency> 6 <dependency> 7 <groupId>com.fasterxml.jackson.core</groupId> 8 <artifactId>jackson-core</artifactId> 9 <version>2.9.3</version> 10 </dependency> 11 <dependency> 12 <groupId>com.fasterxml.jackson.core</groupId> 13 <artifactId>jackson-databind</artifactId> 14 <version>2.9.3</version> 15 </dependency>
servlet.xml改寫:
<bean id="mappingJacksonHttpMessageConverter" class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter">
改為:
<bean id="mappingJacksonHttpMessageConverter" class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
2.Spring4.x寫法的改變
<ref local="xxx" /> 改為 <ref bean="xxx" /> 即local 改為 bean
3.在Spring 3.2.2之后,jdbctemplate中的 (@Deprecated)queryForInt() 已經被取消了,所以得改成queryForObject() 。
4.如果是JDK6變成JDK8的話(Spring4.x向下兼容到6,推薦使用7或8),那么別忘記改編譯器到相應的版本,eclipse有多種改法,我列出一種(說起來也丟人,這種方式我最近才知道的):
在eclipse界面的工程中右擊Properties-ProjectFacts-修改java版本,通常的編譯版本是java1.6,改成java1.8即可,Apply后自動編譯,有些人說要重啟生效,我好像是即時的,不知道是不是我
eclipse版本比較高的原因(Version: Luna Service Release 2 (4.4.2))
5.spring升級到4.x后,orm包里面移除了對ibatis的支持,所以有幾種方式可以解決
A.升級到mybatis(成本充足可以選擇,畢竟以后還是得升級到mybatis的)
B.Spring-orm包不升級,依舊使用Spring3.x
C.Spring-orm升級到4.x,增加以下依賴
1 <dependency> 2 <groupId>org.mybatis</groupId> 3 <artifactId>mybatis-2-spring</artifactId> 4 <version>1.0.3</version> 5 </dependency>
后續測試過程中如果發現其他問題,再補充。