打开 pom.xml,把所有 spring3.x 的版本号更新为 spring4.x。建议使用属性配置,形如:
<properties>
<spring.version>4.3.16.RELEASEspring.version>
properties>
这样就仅需一处升级即可,引用方式如下:
org.springframework
spring-core
${spring.version}
...
quartz 1.x 升级为 quartz 2.x:
<dependency>
<groupId>org.quartz-schedulergroupId>
<artifactId>quartzartifactId>
<version>2.3.0version>
dependency>
quartz 配置文件中的 org.springframework.scheduling.quartz.CronTriggerBean
改为 org.springframework.scheduling.quartz.CronTriggerFactoryBean
jackson 版本升级为 2.9.4:
<jackson.version>2.9.4jackson.version>
涉及以下 5 个相关包:
<dependency>
<groupId>com.fasterxml.jackson.coregroupId>
<artifactId>jackson-coreartifactId>
<version>${jackson.version}version>
dependency>
<dependency>
<groupId>com.fasterxml.jackson.coregroupId>
<artifactId>jackson-databindartifactId>
<version>${jackson.version}version>
dependency>
<dependency>
<groupId>com.fasterxml.jackson.coregroupId>
<artifactId>jackson-annotationsartifactId>
<version>${jackson.version}version>
dependency>
<dependency>
<groupId>com.fasterxml.jackson.modulegroupId>
<artifactId>jackson-module-jaxb-annotationsartifactId>
<version>${jackson.version}version>
dependency>
<dependency>
<groupId>com.fasterxml.jackson.dataformatgroupId>
<artifactId>jackson-dataformat-xmlartifactId>
<version>${jackson.version}version>
dependency>
非 Maven 的项目,要更新为 Spring4.x,过程比较痛苦,因为需要手动把相应的 JAR 包替换掉。
下面贴出可能涉及到、需要被替换掉的 JAR 包:
queryForInt 方法已被弃用,请改为 queryForObject 方法:
queryForObject(String sql, Map<String, ?> paramMap, Class requiredType)
调用示例:
int count=namedParameterJdbcTemplate.queryForObject(sql,
params, Integer.class);
原来在 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 mediaTypes) {
Assert.notNull(mediaTypes, "'mediaTypes' must not be null");
if (mediaTypes.size() > 1) {
Collections.sort(mediaTypes, new CompoundComparator(
MediaType.SPECIFICITY_COMPARATOR, MediaType.QUALITY_VALUE_COMPARATOR));
mediaTypes.set(0, MediaType.APPLICATION_JSON);//把 JSON 类型最为最优先的返回对象类型
}
}
这样所有的 @ResponseBody
的返回对象类型就都是 JSON 格式的对象啦O(∩_∩)O哈哈~
把格式为 http://www.springframework.org/schema/xxx/spring-xxx-3.0.xsd
更改为 http://www.springframework.org/schema/xxx/spring-xxx-4.0.xsd
,如果有的话。