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

2023-11-18

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包。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【工作笔记】web项目从Spring3.x升级到Spring4.x 的相关文章

随机推荐

  • (Oracle基础篇) Select检索数据

    Select语句语法 Select语句是日常使用最多的语句 它以select开头 其中最重要的部分就是Select和From关键字 这两项是查询当中必须的部分 其他子句可以根据实际的需求进行变动 获取指定字段数据代码 查询指定字段数据实例代
  • 如何在Jupyter Notebook中使用Tensorflow

    下边是原文链接 中文翻译如下 http stackoverflow com questions 35771285 using tensorflow through jupyter python 3 解决该问题主要参考Using a virt
  • 7个学习UI、UX设计一定要经历的步骤

    我们不是一些有才华的设计师 我们天生就有艺术天赋 后天我们学会了设计技巧 设计的根本目的是解决问题 设计是不断发现和解决问题 有许多设计领域 UI UX 产品设计师 平面设计师 交互设计师 信息架构师等 所以要找出你最感兴趣的设计专业 现在
  • 【C++入门】新增nullptr关键字详解

    1 C和C 中NULL的区别 ifdef cplusplus 定义这个符号就表示当前是C 环境 define NULL 0 在C 中NULL就是0 else define NULL void 0 在C中NULL是强制类型转换为void 的0
  • 使用externals配置,在VUE 工程中引入外部js文件,减少打包时间

    以VUE项目中引入echarts文件为例 第一步在VUE项目中找到index html文件 引入 第二步 在项目找到 build gt webpack base conf js module exports externals echart
  • CTF--web学习

    这是大二上学期主要学习的一些知识 分享一下 一 linux常见命令 Linux切换到超级管理员 sudo su 切换到普通用户 su username touch创建文件 mkdir创建文件夹 mkdir p aaa bbb ccc创建aa
  • Jupyter:数据分析和网络爬虫开发利器

    Jupyter是一种流行的数据分析和网络爬虫开发工具 它具有许多功能 使得在各种语言 如Python R和Julia 中编写 测试和调试代码变得简单 Jupyter的一个优点是 它允许用户在Web浏览器中与数据和可视化进行交互 无需在本地计
  • 解决webview不显示图片常用方法,亲测有效

    左图不显示图片 右边是解决后显示的 我是先截右边再截左边 所以时间上右边的早了 都有的代码如下 项目中用的dataBinding数据绑定 mBinding wvBaseWebView指的是webview控件 mBinding wvBaseW
  • STM32:Custom HID实现USB双向通信

    本文章主要讲了使用STM32的USB Device 实现控制板和电脑通信功能 从而实现 上位机对控制板进行调试 USB Device可以有多种类型 实现双向通信的话 推荐使用Custom HID类型 首先使用STM32CubeMx实现功能引
  • ffmpeg 音频常用命令

    ffmpeg的使用方式 ffmpeg options infile options i infile outfile options outfile Stream specifier Some options are applied per
  • Log4j学习笔记

    用了三四年的C 转向Java的怀抱 还是有诸多的不适应 C 中不论多复杂的Server 只要有GDB在手 总感觉debug都不是啥大事 程序运行期间的各种状态 都可以通过GDB轻松的获取到 而到了Java中 总感觉像是被困住了手脚 有力没法
  • 【JavaScript】npm、Yarn 和 pnpm 的区别

    npm Yarn 和 pnpm 都是用于管理和构建 JavaScript 项目的包管理工具 以下是它们之间的一些区别和特点 npm Node Package Manager npm 是 Node js 官方提供的包管理工具 是 JavaSc
  • 什么是数据中心IP,优缺点是什么?

    如果根据拥有者或者说发送地址来分类的话 可以将代理分为三类 数据中心ip 住宅ip 移动ip 本文我们来了解数据中心ip的原理以及他们的优势劣势 才能选择适合自己的代理 一 什么是数据中心ip代理 数据中心ip是由数据中心拥有和管理的IP的
  • Air780E

    目录 基础资料 探讨重点 实现功能 硬件准备 软件版本 在雁飞格物平台上创建产品 1 创建产品 2 查看雁飞格物平台接入协议 组成ClientId 组成userName 3 设备鉴权信息 鉴权参数计算 python版 4 MQTT直连雁飞格
  • 目标检测之选择性搜索算法实现(符动图演示)

    定义 选择性搜索是在对象检测中使用的区域提议算法 它的设计速度很快 召回率很高 它基于基于颜色 纹理 大小和形状兼容性的相似区域的分层分组计算 操作步骤 首先使用 Felzenszwalb 和 Huttenlocher 基于图像的分割方法
  • clouddrive挂载阿里云盘之后文件不显示

    clouddrive挂载阿里云盘之后文件不显示 此问题是小概率版本bug 待更新后解决 目前解决方案 重新挂载登录刷新
  • R手册(Visualise)--GGally(ggplot2 extensions)

    本站已停止更新 查看最新内容请移至本人博客 Wilen s Blog 文章目录 GGally ggmatrix ggplot2矩阵 ggpairs ggplot2广义配对图 ggscatmat 纯粹定量变量的传统散点图矩阵 返回ggplot
  • canvas绘制并导出图片(画笔)

    绘制 var canvas document getElementById myCanvas canvas width document getElementById drawLine offsetWidth canvas height d
  • HTML中的& nbsp; & ensp; & emsp;等6种空格标记

    代码 1 2 3 4 5 6
  • 【工作笔记】web项目从Spring3.x升级到Spring4.x

    Spring3 x升级到Spring4 x Spring升级首先到https docs spring io spring framework docs官方文档查看Spring各个版本的信息 比较不同 确定要升级的版本和要改动的地方 从官网可