原来项目使用的是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>
后续测试过程中如果发现其他问题,再补充。