从永远到永远-SSM项目升级踩坑

SSM项目升级踩坑

  • 1.背景
  • 2.升级
    • 1.SpringMVC升级完之后接口404
    • 2.mybatis、mybatis-spring
  • 3.注意

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之后,貌似直接废弃了此设置。

从永远到永远-SSM项目升级踩坑_第1张图片
手动设置开启即可,在spring-mvc.xml中,添加或修改以下代码,开启后缀匹配模式

<mvc:annotation-driven>
    <mvc:path-matching suffix-pattern="true"/>
</mvc:annotation-driven>

参考1
GitHub相关issue

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版本不匹配,详细内容参考官网
从永远到永远-SSM项目升级踩坑_第2张图片
升级了spring,也对应升级了mybatis,而mybatis-spring版本还是1.3.4,显然不符合条件。

3.注意

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

你可能感兴趣的:(挖坑小能手-Spring,#,挖坑小能手-SSM,spring,springmvc,ssm,mybatis,spring-mybatis)