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 包:

 
quartz 相关
 
jackson 相关
 
Spring 相关

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,如果有的话。



作者:deniro
链接:https://www.jianshu.com/p/e52a7476ae95
来源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM