Spring3.x 升级至 Spring4.x 详解

1 升级依赖包

1.1 Maven 项目

1.1.1 更新 spring 依赖版本

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


        4.3.16.RELEASE
 

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


    org.springframework
    spring-core
    ${spring.version}

...

1.1.2 升级 quartz

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


  org.quartz-scheduler
  quartz
  2.3.0

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

1.1.3 升级 jackson

jackson 版本升级为 2.9.4:

2.9.4

涉及以下 5 个相关包:


    com.fasterxml.jackson.core
    jackson-core
    ${jackson.version}


    com.fasterxml.jackson.core
    jackson-databind
    ${jackson.version}


    com.fasterxml.jackson.core
    jackson-annotations
    ${jackson.version}


    com.fasterxml.jackson.module
    jackson-module-jaxb-annotations
    ${jackson.version}


    com.fasterxml.jackson.dataformat
    jackson-dataformat-xml
    ${jackson.version}

1.2 非 Maven 项目

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

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

quartz 相关
Spring3.x 升级至 Spring4.x 详解_第1张图片
jackson 相关
Spring3.x 升级至 Spring4.x 详解_第2张图片
Spring 相关

2 替换 spring jdbc 的 queryForInt 方法

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

queryForObject(String sql, Map paramMap, Class 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 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哈哈~

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 详解)