• 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
    来源:简书
    简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。
  • 相关阅读:
    ActionResult 的返回类型
    MVC4.0中ViewBag、ViewData、TempData和ViewModel几种传值方式的区别
    抛出异常的区别 throw 和throw ex
    字段的重复校验问题
    bootstrap 动态添加验证项和取消验证项
    VS快捷键大全(转)
    数组、List和ArrayList的区别
    处理两个泛型集合差异化
    传参的两种方式
    tomcat中web项目编译后的结构
  • 原文地址:https://www.cnblogs.com/pegasus827/p/11155126.html
Copyright © 2020-2023  润新知