1 升级依赖包

1.1 Maven 项目

1.1.1 更新 spring 依赖版本

打开 pom.xml,把所有 spring3.x 的版本号更新为 spring4.x。建议使用属性配置,形如:

<properties><spring.version>4.3.16.RELEASE</spring.version></properties>

这样就仅需一处升级即可,引用方式如下:

<dependency><groupId>org.springframework</groupId><artifactId>spring-core</artifactId><version>${spring.version}</version>
</dependency>
...

1.1.2 升级 quartz

quartz 1.x 升级为 quartz 2.x:

<dependency><groupId>org.quartz-scheduler</groupId><artifactId>quartz</artifactId><version>2.3.0</version>
</dependency>

quartz 配置文件中的 org.springframework.scheduling.quartz.CronTriggerBean 改为 org.springframework.scheduling.quartz.CronTriggerFactoryBean

1.1.3 升级 jackson

jackson 版本升级为 2.9.4:

<jackson.version>2.9.4</jackson.version>

涉及以下 5 个相关包:

<dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-core</artifactId><version>${jackson.version}</version>
</dependency>
<dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-databind</artifactId><version>${jackson.version}</version>
</dependency>
<dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-annotations</artifactId><version>${jackson.version}</version>
</dependency>
<dependency><groupId>com.fasterxml.jackson.module</groupId><artifactId>jackson-module-jaxb-annotations</artifactId><version>${jackson.version}</version>
</dependency>
<dependency><groupId>com.fasterxml.jackson.dataformat</groupId><artifactId>jackson-dataformat-xml</artifactId><version>${jackson.version}</version>
</dependency>

1.2 非 Maven 项目

非 Maven 的项目,要更新为 Spring4.x,过程比较痛苦,因为需要手动把相应的 JAR 包替换掉。

下面贴出可能涉及到、需要被替换掉的 JAR 包:

2 替换 spring jdbc 的 queryForInt 方法

queryForInt 方法已被弃用,请改为 queryForObject 方法:

queryForObject(String sql, Map<String, ?> paramMap, Class<T> requiredType)

调用示例:

int count=namedParameterJdbcTemplate.queryForObject(sql,params, Integer.class);

3 SpringMVC 返回 JSON 格式

原来在 Spring3 中默认会返回 JSON 格式,然而在 Spring4 中可能会默认返回 XML 格式:

如果这里的响应消息格式变为 application/xml;charset=UTF-8,那么可以在 Controller 中的 @RequestMapping 中加入 produces = "application/json",明确指定返回 JSON 格式。

示例:

@RequestMapping(value = "/login", method = RequestMethod.POST, produces = "application/json")

如果涉及的 Controller 较多(比如项目中存在大量的接口),那么可以修改 Spring 框架的源代码——org.springframework.http.MediaType:

public static void sortBySpecificityAndQuality(List<MediaType> mediaTypes) {Assert.notNull(mediaTypes, "'mediaTypes' must not be null");if (mediaTypes.size() > 1) {Collections.sort(mediaTypes, new CompoundComparator<MediaType>(MediaType.SPECIFICITY_COMPARATOR, MediaType.QUALITY_VALUE_COMPARATOR));mediaTypes.set(0, MediaType.APPLICATION_JSON);//把 JSON 类型最为最优先的返回对象类型}}

这样所有的 @ResponseBody 的返回对象类型就都是 JSON 格式的对象啦O(∩_∩)O哈哈~

4 更新 XML 配置文件中的 xsd 版本号

把格式为 http://www.springframework.org/schema/xxx/spring-xxx-3.0.xsd 更改为 http://www.springframework.org/schema/xxx/spring-xxx-4.0.xsd,如果有的话。

Spring3.x 升级至 Spring4.x 详解相关推荐

  1. Spring4 AOP详解

    Spring4 AOP详解 第一章Spring 快速入门并没有对Spring4 的 AOP 做太多的描述,是因为AOP切面编程概念不好理解.所以这章主要从三个方面详解AOP:AOP简介(了解),基于注 ...

  2. SpringBoot详解(一)-快速入门

    SpringBoot详解系列文章: SpringBoot详解(一)-快速入门 SpringBoot详解(二)-Spring Boot的核心 SpringBoot详解(三)-Spring Boot的we ...

  3. spring(7)---深入理解Spring核心技术——Spring中的各模块详解

    深入理解Spring核心技术--Spring中的各模块详解 Spring框架的两个基本概念IOC容器和AOP,相信大家现在对Spring中的这两个部分的基本概念有了一定的认识,好了,那么今天我们就来正 ...

  4. Spring MVC测试框架详解——服务端测试

    随着RESTful Web Service的流行,测试对外的Service是否满足期望也变的必要的.从Spring 3.2开始Spring了Spring Web测试框架,如果版本低于3.2,请使用sp ...

  5. Spring配置详解,Spring配置元信息详解,Spring配置大全及源码分析

    文章目录 一.Spring都可以配置哪些元信息 二.Spring Bean 配置元信息 1.GenericBeanDefinition 2.RootBeanDefinition 3.Annotated ...

  6. Spring 快速入门详解

    Spring 入门详解 简介 Spring就是指Spring framework是分层的 Java SE/EE 一站式轻量级开源框架,Spring 框架是全家桶(spring mvc.spring b ...

  7. SCheckbox_Struts2标签之Checkbox详解

    sparta-紫杉   2010-4-14 16:53 开发环境:eclipse3.4.2 + weblogic10.3 + jdk1.6.0_13 + Struts2.1.8 + Spring3.0 ...

  8. nc65数据字典 云盘_从搜索引擎到核心交易数据库,详解阿里云神龙如何支撑双11...

    2020年的双11,天猫又创造了新的纪录:订单峰值达到创纪录的58.3万笔/秒,销售额达到历史新高4982亿,阿里云神龙再次成功扛住了全球流量洪峰.2020年是双11全面云原生化的第一年,也是神龙架构 ...

  9. 基于Kubernetes构建Docker集群管理详解

    from: 基于Kubernetes构建Docker集群管理详解 Kubernetes是Google开源的容器集群管理系统,基于Docker构建一个容器的调度服务,提供资源调度.均衡容灾.服务注册.动 ...

最新文章

  1. info java module_如何在Jdk9 / java-9中解决module-info.java编译错误
  2. c++中的数组和指针,引用
  3. mysql 语句除法_SQL的查询语句(除法)
  4. linux rpm 没有返回,容易忘记的linux命令之rpm
  5. java nature_Java中BufferedReader和scanner的对比 - nature
  6. UE4--多线程的实现方式
  7. asterisk的NAT配置
  8. vue项目原理分析-3:vuex
  9. C++ 与 php 的交互 之----- C++ 异步获取 网页文字内容,异步获取 php 的 echo 值。...
  10. 小成本、大体验,“听歌自由”时代来临
  11. 使用maven快速入门
  12. C语言项目源码,C语言源代码大全(2021最新)!
  13. 超平面是什么?——理解超平面(SVM开篇之超平面详解)
  14. 最新51单片机毕业设计项目集合
  15. 如何获取Python字符串长度?
  16. Foreign Language_english_补语
  17. Let_god_knows
  18. word分散对齐调整宽度_Word文档如何让不同字数对齐
  19. 跳跃游戏 (动态规划剪枝/前缀和/滑动窗口/BFS剪枝)
  20. 卷积神经网络(CNN)网络结构及模型原理介绍

热门文章

  1. 完美世界-2019春招第二道算法题--圣斗士救雅典娜
  2. DT时代,手机厂商更在意大数据,京东能满足么?
  3. 曦域资本黄晓黎:科技金融的现在与未来
  4. websocket及心跳检测
  5. JavaScript-匿名函数
  6. 【经验】博客|使用 dotnet-cnblog 将Gitee图床的图片、本地的图片上传到博客园中
  7. LaTeX模板中英文的双标题——subfigure中的子标题实现
  8. linux+特殊字符文件夹,linux创建带特殊符号的文件夹
  9. 计算机毕业设计小程序点餐|外卖|餐饮系统+后台SSM
  10. 【杰理AC692X】来电在报号之前播自定义提示音