1.背景
上古SSM项目,因安全漏洞需要升级框架,现记录下遇到的几个问题
2.升级
1.SpringMVC升级完之后接口404
| 依赖 | 升级前版本 | 升级后版本 |
|---|---|---|
| spring相关(core、bean、tx、aop等) | 4.1.6.RELEASE | 5.3.27 |
| spring-web | 4.1.6.RELEASE | 5.3.27 |
| spring-webmvc | 4.1.6.RELEASE | 5.3.27 |
Spring、SpringMVC等相关版本从
4.1.6.RELEASE升到了5.3.27。升级完之后,原来能够访问的接口,报错404。
经debug多次测试,发现后缀的问题。分析源码,发现useSuffixPatternMatch默认设置为false,即后缀匹配模式默认不启用。注释中显示,5.2.4之后,貌似直接废弃了此设置。

手动设置开启即可,在spring-mvc.xml中,添加或修改以下代码,开启后缀匹配模式
<mvc:annotation-driven>
<mvc:path-matching suffix-pattern="true"/>
</mvc:annotation-driven>
2.mybatis、mybatis-spring
| 依赖 | 升级前版本 | 升级后版本 |
|---|---|---|
| mybatis | 3.3.0 | 3.5.6 |
| mybatis-spring | 1.2.3 | 2.0.5 |
| 升级mybatis依赖版本之后,报错: |
java.lang.AbstractMethodError: org.mybatis.spring.transaction.SpringManagedTransaction.getTimeout()Ljava/lang/Integer;
原因是,mybatis-spring版本与mybatis版本不匹配,详细内容参考官网

升级了spring,也对应升级了mybatis,而mybatis-spring版本还是1.3.4,显然不符合条件。
3.注意
mybatis、mybatis-spring版本问题,很早就发现了。按照匹配版本修改,测试一直不通过。好一顿折腾,发现项目中依赖已经成功换了,但是运行的war包中的依赖还是旧版本。如果,大家有类似的问题,注意清理一下/target下的旧包(真的坑)。

本文讲述了在SSM项目升级过程中遇到的问题,如SpringMVC4.1.6升级到5.3.27导致的接口404,以及mybatis和mybatis-spring版本不匹配引发的AbstractMethodError。升级时需注意清理过时的war包依赖。
6491

被折叠的 条评论
为什么被折叠?



