整合Spring+SpringMVC+MyBatis(SSM)中所遇到的问题

最近公司的事情太多了,周一、二晚上跑通了MyBatis的简单例子,周末架起了Spring+SpringMVC+MyBatis的基本骨架,简单例子成功跑了起来。后续的一些深入理解,在这个的基础上才能进行吧。主要参考:https://blog.csdn.net/zhshulin/article/deta

最近公司的事情太多了,周一、二晚上跑通了MyBatis的简单例子,周末架起了Spring+SpringMVC+MyBatis的基本骨架,简单例子成功跑了起来。后续的一些深入理解,在这个的基础上才能进行吧。

其实跑一个简单的Sample问题是不大的,遇到的错误,需要仔细阅读错误提示信息,然后根据提示一步一步去解决;遇到一些莫名其妙的错误时,可以考虑一下是否为包的版本问题。

问题1:导入MyBatis-SpringMyBatis以及Spring版本所对应的关系

参考:http://www.mybatis.org/spring/

MyBatis-Spring MyBatis Spring
1.0.0 and 1.0.1 3.0.1 to 3.0.5 3.0.0 or higher
1.0.2 3.0.6 3.0.0 or higher
1.1.0 or higher 3.1.0 or higher 3.0.0 or higher
1.3.0 or higher 3.4.0 or higher 3.0.0 or higher

问题2:java.lang.IllegalAccessError: org.apache.commons.dbcp.DelegatingPreparedStatement.isClosed()Z

出现这个错误的时候,MyBatis的版本是3.4.6,只需要将其版本降下去,此错误即可消失。这个错误确实有点无语。已换成了3.2.6。

问题3:运行项目MyEclipse提示端口8080被占用

Mac下可使用lsof命令,如下

这里写图片描述

lsof是一个显示系统中所有已打开文件的一个命令,即ls open file

问题4:MyEclipse不进行代码提示

JetBrain系列IDE使用多了,在MyEclipse上不能进行代码提示,有点难受。网上也是有解决方案的,如下:

进入Preference->Java->Editor->Content Assist->Auto Activation,在Auto activation trigger for Java中我们可以看到有一个'.',所以这就是为什么我们输入.的时候,就会出来代码提示,而其它情况下就不会。所以只需要在其后面加上a-zA-Z0-9就好了。即: abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789

问题5:Cannot find class [org.springframework.http.converter.json.MappingJacksonHttpMessageConverter]

这是一个典型的因为包的版本不兼容而引起的错误。MappingJacksonHttpMessageConverter这个类是很久以前的一个类了,目前最新的包内是不含有此类的,取而代之的是MappingJackson2HttpMessageConverter参考:https://blog.csdn.net/vili_sky/article/details/73105550

问题6:Class not found: AnnotationMethodHandlerAdapter

同上。

Spring Framework 3.1 introduces a new set of support classes for processing requests with annotated controllers:

RequestMappingHandlerMapping

RequestMappingHandlerAdapter

ExceptionHandlerExceptionResolver

These classes are a replacement for the existing:

DefaultAnnotationHandlerMapping

AnnotationMethodHandlerAdapter

AnnotationMethodHandlerExceptionResolver

参考

  1. https://blog.csdn.net/zhshulin/article/details/37956105
  2. https://blog.csdn.net/qq598535550/article/details/51703190
  3. https://blog.csdn.net/yfisaboy/article/details/31755631
  4. https://blog.csdn.net/yfisaboy/article/details/31755631

Read more

Volcano 与 Kubernetes GPU 调度学习笔记

本笔记系统整理 Volcano 调度器、Kubernetes 调度框架、GPU Device Plugin、HAMi 等云原生 AI 调度领域的核心知识,适合用于学习、复习和工程实践参考。 目录 * 第一部分:Volcano 入门 * 1. Volcano 是什么 * 2. 安装与快速使用 * 3. 核心特性一览 * 第二部分:Volcano 整体架构 * 4. Volcano 解决的核心问题 * 5. 整体架构与数据流 * 6. 三层抽象模型 * 第三部分:Volcano 核心实现原理 * 7. Session 机制 * 8. Gang Scheduling 实现 * 9. Queue 与 DRF 公平调度

容器镜像(4):镜像的常用工具箱

容器镜像(4):镜像的常用工具箱

前几篇在讲多架构镜像时已经用过 skopeo 和 crane 做镜像复制,这篇系统整理这两个工具的完整能力,同时介绍几个日常操作镜像时同样好用的工具。 一、skopeo:不依赖 Daemon 的镜像瑞士军刀 skopeo 的核心价值是绕过 Docker daemon,直接与 Registry API 交互。上一篇用它做镜像复制和离线传输,但它的能力远不止于此。 1.1 安装 # Ubuntu / Debian sudo apt install -y skopeo skopeo --version # skopeo version 1.15.1 1.2 inspect:免拉取检查镜像元数据 docker inspect 需要先把镜像拉到本地,skopeo inspect 直接向 Registry

容器镜像(3):多架构镜像构建

容器镜像(3):多架构镜像构建

一、什么是多架构镜像 1.1 OCI Image Index 上一篇介绍了单平台镜像的结构:一个 Manifest 指向 Config 和若干 Layer blob。多架构镜像在此之上多了一层——OCI Image Index(也叫 Manifest List),是一个轻量的索引文件,把多个单平台 Manifest 组织在一起: $ docker manifest inspect golang:1.22-alpine { "schemaVersion": 2, "mediaType": "application/vnd.oci.image.index.v1+json", "manifests&

容器镜像(2):containerd 视角下的镜像

容器镜像(2):containerd 视角下的镜像

一、为什么需要了解 containerd 如果你只用 docker run 跑容器,从来不关心底层,那可以不了解 containerd。但如果你在用 Kubernetes,或者想真正理解"容器运行时"是什么,containerd 是绕不开的。 事实上,当你执行 docker run 的时候,containerd 早就在后台悄悄工作了——Docker 从 1.11 版本开始,就把核心运行时剥离出来交给 containerd 负责。 1.1 Docker 的架构演变 早期的 Docker(1.10 及之前)是一个"大一统"的单体程序:一个 dockerd