Spring3.x 升级至 Spring4.x 详解
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 详解相关推荐
- Spring4 AOP详解
Spring4 AOP详解 第一章Spring 快速入门并没有对Spring4 的 AOP 做太多的描述,是因为AOP切面编程概念不好理解.所以这章主要从三个方面详解AOP:AOP简介(了解),基于注 ...
- SpringBoot详解(一)-快速入门
SpringBoot详解系列文章: SpringBoot详解(一)-快速入门 SpringBoot详解(二)-Spring Boot的核心 SpringBoot详解(三)-Spring Boot的we ...
- spring(7)---深入理解Spring核心技术——Spring中的各模块详解
深入理解Spring核心技术--Spring中的各模块详解 Spring框架的两个基本概念IOC容器和AOP,相信大家现在对Spring中的这两个部分的基本概念有了一定的认识,好了,那么今天我们就来正 ...
- Spring MVC测试框架详解——服务端测试
随着RESTful Web Service的流行,测试对外的Service是否满足期望也变的必要的.从Spring 3.2开始Spring了Spring Web测试框架,如果版本低于3.2,请使用sp ...
- Spring配置详解,Spring配置元信息详解,Spring配置大全及源码分析
文章目录 一.Spring都可以配置哪些元信息 二.Spring Bean 配置元信息 1.GenericBeanDefinition 2.RootBeanDefinition 3.Annotated ...
- Spring 快速入门详解
Spring 入门详解 简介 Spring就是指Spring framework是分层的 Java SE/EE 一站式轻量级开源框架,Spring 框架是全家桶(spring mvc.spring b ...
- SCheckbox_Struts2标签之Checkbox详解
sparta-紫杉 2010-4-14 16:53 开发环境:eclipse3.4.2 + weblogic10.3 + jdk1.6.0_13 + Struts2.1.8 + Spring3.0 ...
- nc65数据字典 云盘_从搜索引擎到核心交易数据库,详解阿里云神龙如何支撑双11...
2020年的双11,天猫又创造了新的纪录:订单峰值达到创纪录的58.3万笔/秒,销售额达到历史新高4982亿,阿里云神龙再次成功扛住了全球流量洪峰.2020年是双11全面云原生化的第一年,也是神龙架构 ...
- 基于Kubernetes构建Docker集群管理详解
from: 基于Kubernetes构建Docker集群管理详解 Kubernetes是Google开源的容器集群管理系统,基于Docker构建一个容器的调度服务,提供资源调度.均衡容灾.服务注册.动 ...
最新文章
- info java module_如何在Jdk9 / java-9中解决module-info.java编译错误
- c++中的数组和指针,引用
- mysql 语句除法_SQL的查询语句(除法)
- linux rpm 没有返回,容易忘记的linux命令之rpm
- java nature_Java中BufferedReader和scanner的对比 - nature
- UE4--多线程的实现方式
- asterisk的NAT配置
- vue项目原理分析-3:vuex
- C++ 与 php 的交互 之----- C++ 异步获取 网页文字内容,异步获取 php 的 echo 值。...
- 小成本、大体验,“听歌自由”时代来临
- 使用maven快速入门
- C语言项目源码,C语言源代码大全(2021最新)!
- 超平面是什么?——理解超平面(SVM开篇之超平面详解)
- 最新51单片机毕业设计项目集合
- 如何获取Python字符串长度?
- Foreign Language_english_补语
- Let_god_knows
- word分散对齐调整宽度_Word文档如何让不同字数对齐
- 跳跃游戏 (动态规划剪枝/前缀和/滑动窗口/BFS剪枝)
- 卷积神经网络(CNN)网络结构及模型原理介绍