【工作笔记】web项目从Spring3.x升级到Spring4.x

Spring3.x升级到Spring4.x

Spring升级首先到https://docs.spring.io/spring-framework/docs官方文档查看Spring各个版本的信息,比较不同,确定要升级的版本和要改动的地方。

从官网可以得知***Spring4.3.x版本于2020年12月31日正式停产***,如果不想升级到Spring5.x,可以使用Spring4.3.x版本。

我要升级的项目是非maven项目,且是3.0.6===》4.3.14,可以先看下Spring3.x和Spring4.x的核心框架的区别。

【Spring3与4对比】:

Spring3.x框架由组织为约20个模块的功能组成。这些模块分为核心容器,数据访问/集成,Web,AOP(面向方面的编程),检测和测试,如下图所示。

在这里插入图片描述

Spring4.x框架由组织为约20个模块的功能组成。这些模块分为核心容器,数据访问/集成,Web,AOP(面向方面的编程),检测,消息传递和测试,如下图所示。

在这里插入图片描述

【区别总结】:

​ Spring4.x去掉了spring3的struts,添加了messaging(消息传递)和websocket(web通信)

【核心jar包替换】:

在这里插入图片描述

【需要注意的点】:

​ Spring 4.x已经将asm组件整合在 Spring-core 里,直接删掉asm-3x.jar包

​ transaction在3.2.2以后被放到了spring-tx包下面

​ web.struts和web.servlet被替换成了webmvc

【更改xsd版本为4.0】:

在这里插入图片描述

【升级出现的错误】:

Error creating bean with name 'persistenceExceptionTranslator' defined in URL [jar:file:/F:/.../out/artifacts/.../WEB-INF/lib/spring-tx-4.3.14.RELEASE.jar!/org/springframework/dao/support/PersistenceExceptionTranslator.class]: Invocation of init method failed; nested exception is java.lang.IllegalArgumentException: Property 'sqlSessionFactory' or 'sqlSessionTemplate' are required

错误提示①spring-tx-4.3.14.RELEASE.jar包下的PersistenceExceptionTranslator的class文件定义错误。

又提示②Property ‘sqlSessionFactory’ or ‘sqlSessionTemplate’ are required。

网上查找原因,大概如下:

  • 查①,缺失tx的jar包?:不会,jar包有,包下的类也有,并且我的提示并不是没有这个类,而是无法创建bean。
  • jar包未编译成功?:不会,在Spring3.x的项目里同样的配置可以运行成功。
  • 查②,取消自动注入?:不行,我的项目没用到mybatis,也不是Springboot和maven项目。

解决办法:

​ 请教同事大佬,分分钟看出原因

原因:

applicationContext.xml配置类中的mybatis扫描配置为所有路径下的dao文件夹,(虽然目前没有用到mybatis),根据错误提示,出错文件路径为dao/support/PersistenceExceptionTranslator.class,正好路径中也包含dao文件夹,spring错误扫描到了这个jar包下的文件,导致报错。

<!-- 映射扫描配置 -->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
   <property name="basePackage" value="**.*.dao" />
</bean>

解决:

​ 改value="**.*.dao"为指定路径value="com.*.dao"

大佬说应为jar包缺失导致的,我实在不知道是因为缺哪个包,总之先这么改着,至少项目可以启动了。

【总结】:对比maven项目,非maven项目要手动更新jar包,修改配置文件中spring版本。比较麻烦,如果不确定哪个jar包是否需要,可以启动运行项目,根据错误提示一点点补全jar包。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值