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