SSM整合的基本思路梳理

news2024/12/25 15:46:07

SSM整合的简单思路流程

基本思路

我在整合的时候一般习惯从MyBatis开始向上构建,也就是在开始一个项目的时候先将DAO层搭建起来,再向上整合Spring以及SpringMVC。按照这个流程,可以做出一个比较简单的大致流程作为参考,帮助我们在构建项目以及进行整合的时候有一个比较清晰的思路。

整合流程

1.创建MyBatis项目

我们以基于XML文件的开发为案例,基本的流程是大致相同的,无非就是使用配置文件或者使用注解的区别而已。

1.首先我们创建一个Maven项目,然后添加MyBatis框架。我们要先创建一个软件包,报名叫做com.Spring,我们所有的三层架构的软件包,或者是实体类的软件包都是在这个软件包下创建的。

2.之后我们需要将我们需要用到的依赖都导进我们的pom文件中,然后等待依赖刷新。

3.然后我们就可以开始正式的搭建MyBatis框架了,首先我们需要创建一个dao包,在com.spring包下面,以及创建一个结果集映射类的pojo包

4.然后我们开始编写mapper文件,以及我们的结果集映射类的文件。其实这样我们的MyBatis就已经搭建好了,但是我们的数据源对象和SqlSessionFaction对象是交由我们的Spring去管理的,所以我们暂时无法做测试,当我们整合Spring之后,我们就可以从容器中获取对象去进行测试了。

5.下一步,我们就是整合Spring文件,其实整合的过程就是将MyBatis所需要的数据源对象以及SqlSessionFaction对象和DAO层映射交给Spring的配置文件去管理。我们创建一个Spring的配置文件去将这些配置文件写入进去。

6.完成这一步之后,我们的MyBatis环境就已经搭建完成了,我们可以做一下MyBatis的单元测试,也就是我们可以在test文件夹中创建一个类,然后从容器中获取SqlSessionFaction的类,然后通过这个类获取Mapper接口的动态代理对象,通过动态代理对象调用方法,这时候我们是可以运行出来查询结果的。

到了这个阶段我们可以简单的看一下我们的项目文件结构:

我们的单元测试的结果也可以展示一下:

2.创建Spring部分

1.完成了MyBatis的配置文件之后,我们要再新建一个service包,并且我们再创建一个Spring自己的配置文件,去扫描service包下的控制器。

2.然后我们需要在Service包下面创建一个接口,这个接口中的方法可以和userMapper中的方法一样

3.然后在Service包下面,创建一个Impl包,用来存放实现service接口的类

4.我们在实现类中,使用自动注入的方式将userMapper接口注入进来。

这里需要说一下,因为我们注入的是一个接口,但是我们没有创建这个接口的实现类,所以这里在自动注入的时候时会报错的,这个报错是编译时报错,叫做找不到自动注入的类型。那么我们要知道,我们在MyBatis的配置中是配置了一个接口映射扫描的东西,那么这个东西在扫描到DAO包下面有接口之后,会自动的将这些接口实现,并将实现类注册到我们的容器中,这样在运行的时候就可以正常运行,这个报错可以不处理,如果是看着碍事,可以在IDE中将它改成警告。

5.我们在Service中调用DAO层的接口中的方法,然后将结果返回,然后我们的Spring整合MyBatis也就完成了,我们可以对这一块也进行一个单元测试,对Service的测试就比较复杂,他需要引入单元测试,并且引入配置文件。

我们可以看一下我们是如何进行测试的:

我们知道,当我们选中接口的类名然后点击ctrl+shift+t快捷键可以快速生成接口测试类,但是如果在这个地方你这么做了那么你就可能会导致一个错误叫做空指针异常,就是说你的userService没有正确的自动注入进去。如果你出现了这个错误,那就把上面的那个Test的注解的包名写对,他自己创建的Test的包名可能不适用于你的Spring版本。

然后我们就是可以运行测试,如果配置正确,那么我们就可以得到如下的结果:

红色的是日志啦,肯定不是警告。这样就完成了Spring整合MyBatis,接下来就是Spring整合SpringMVC的过程

Spring整合SpringMVC

这个整合的过程也是非常的简单,因为SpringMVC是Spring的子容器,所以他们只需要各自加载各自的配置文件即可,唯一需要有交集的地方就是需要在web.xml中配置一下读取Spring容器配置文件的标签。

1.首先我们要先添加web框架

2.我们在web.xml文件中需要先导入Spring的容器文件,也就是我们之前写的两个文件都要导入进来。然后继续添加前端控制器。

3.然后创建SpringMVC的配置文件,在这个配置文件中,我们要配置扫描controller包,以及配置注解驱动

4.然后我们创建controller包,然后在这个包下面创建控制器类,我们需要使用自动注入userService,然后我们在控制器类中调用userService。

5.我们查询的结果封装到JSP页面中返回到浏览器前端中。

至此我们就完成了SSM的整合的基本流程的梳理

我确实没有写我们用到的具体的类,以及我们具体的操作,流程主要辅助,还是多练手感,不用看流程也就知道了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/426313.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

企业为什么要做网站?这篇文章告诉你

在如今数字化的时代,企业为什么要做网站?这个问题一直都是企业主和市场营销人员必须要考虑的问题。本文将以一个真实的案例为例,解析为什么企业要做网站以及如何通过网站提升业务和品牌的影响力。 案例背景 以一家小型私人医疗诊所为例&…

【神经网络】tensorflow实验4--Matplotlib数据可视化

1. 实验目的 ①掌握Matplotlib绘图基础 ②运用Matplotlib,实现数据集的可视化 ③运用Pandas访问数据集 2. 实验内容 ①绘制散点图、直方图和折线图,对数据进行可视化 ②下载波士顿数房价据集,并绘制数据集中各个属性与房价之间的散点图&#…

人人可用的敏捷指标工具!Kyligence Zen 正式发布 GA 版

4 月 11 日,Kyligence 指标平台产品发布会成功召开。发布会上,一站式指标平台 Kyligence Zen 正式推出 GA 版,接下来这款人人可用的敏捷指标工具将以更加完善、成熟、稳定的产品性能与功能解决企业面临的指标管理、分析和应用痛点 &#xff0…

【信息论】一、信息与信息论

“The fundamental problem of communication is that of reproducing at one point either exactly or approximately a message selected at another point.” —— Claude Elwood Shannon 1.1 信息的定义 什么是信息?它与消息、信号之间有什么区别和联系&#…

指纹识别q

1、指纹传感器 FTIR(Frustrated Total Internal Reflection),受抑全内反射。在屏幕的夹层中加入LED光线,当用户按下屏幕时,使夹层的光线造成不同的反射效果,感应器接收光线变化而捕捉用户的施力点。 明显的缺点:体积太…

弹塑性力学--应变硬化

在单轴拉伸试验中,当应力超过屈服强度后,需要施加更大的载荷产生更大的应力,才会使材料发生更多的塑性变形。随着塑性应变的增加,材料变得更强、更难以变形了,因此这个阶段称为“应变硬化”(Strain Hardeni…

数据库----------唯一约束、默认约束、零填充约束

目录 1.唯一约束(Unique) 1.概念 2.语法 3.添加唯一约束 4.删除唯一约束 2.默认约束(default) 1.概念 2.语法 3.添加默认约束 4.删除默认约束 3.零填充约束(zerofill)了解即可 1.概念 2.操作 3.删除 1.唯一约束&…

如来十三掌(与佛论禅、Rot13编码)

下载附件打开是一串... 佛经 666 这个编码方式还真是第一次遇见----与佛论禅 对文本进行与佛论禅密码解密 得到 MzkuM3gvMUAwnzuvn3cgozMlMTuvqzAenJchMUAeqzWenzEmLJW9 根据题目提示,如来十三掌,猜测是rot13加密,进行rot13解码 得到 Z…

Cloud computing

Cloud computing 可以看到右侧的容器虚拟化架构中,不需要运行额外的OS,这样启动的服务性能会相比于通过虚拟化软件实现的架构更优秀。但是虚拟机同样也有它的优点,比如它的安全、隔离性,可以运行不同的操作系统等等。 Virtualiz…

EasyCVR平台基于GB28181协议的语音对讲配置操作教程

EasyCVR基于云边端协同,具有强大的数据接入、处理及分发能力,平台可支持海量视频的轻量化接入与汇聚管理,可提供视频监控直播、视频轮播、视频录像、云存储、回放与检索、智能告警、服务器集群、语音对讲、云台控制、电子地图、平台级联等功能…

企业网站架构LAMP部署与优化(apache、mysql、php)

目录LAMP概述与简介编译安装Apache http服务1、关闭防火墙,将安装Apache所需软件包传到/opt/apache目录下2、在opt/apache目录下安装http所需软件包3、解压以下文件4、将解压的两个文件移到相应目录5、安装环境依赖包6、配置软件模块7、编译安装8、优化配置文件路径…

【linux】:linux下文件的使用以及文件描述符

文章目录 前言一、linux系统中的文件操作以及文件接口二、文件描述符 1.文件描述符的分配规则2.重定向总结前言 理解文件原理和操作: 我们先快速回忆下一C语言的文件操作: 首先看一下fopen函数的使用,然后我们写一段简单的C语言打开文件的代…

使用conda来管理虚拟环境

百度miniconda 下载windows版,安装的时候添加环境变量Conda -info -e 可以看到只有一个虚拟环境​ ​​​​​​3.Conda命令 (1&#x…

高效学习方法分享和学习工具推荐

方法不对,努力白费;方法对了,事半功倍! 口号喊起来,气氛拉满! 我现在是吉林大学计算机科学与技术大四在读(2023春季学期),刚好趁这个活动回顾一下我的大学生活。上过大学…

Android: 在wsl中使用libevent实现http服务器,并编写Android app 实现文件下载

在wsl中使用libevent实现http服务器,并编写Android app 实现文件下载 PC端: 在WSL中编译libevent-2.1.8-stable sample中的http-server.c,实现http测试用服务器 Makefile如下: #指定源文件为*.c src $(wildcard *.c) #通过src…

houjie-cpp面向对象

houjie 面向对象 面向对象(上) const 在一个函数后面放const,这个只能修饰成员函数,告诉编译器这个成员函数不会改数据 const还是属于函数签名的一部分。 引用计数:涉及到共享的东东,然后当某个修改的时候&…

Java的时代依然还在,合格的Java工程师成为紧缺人才

Java的时代依然还在,合格的Java工程师成为紧缺人才编程语言的世界变化莫测,在其中浮浮沉沉28年的Java,也经历见证了很多语言的兴起和衰败。在最新的编程语言排行榜中,Java依旧位居前三,可见Java的发展后劲有多强&#…

BlockCanary 卡顿监测

作者:海象 前言 最近在处理项目中的拍摄视频后上传界面卡顿的问题,找到 BlockCanary 这个工具来定位,由于不支持高版本 Android,当时在定位卡顿时先将项目的 targetSdk 版本降下来,当然这不是个长久的办法,打算花一点时间适配下高版本,先过一遍源码流程 网上很多博…

ESP32 分区表

ESP32 分区表 1. 分区表概述 ESP32 针对 flash 进行划分,划分为不同的区域用作不同的功能,并在flash的 0x8000 位置处烧写了一张分区表用来描述分区信息。 分区表可以根据自己的需要进行配置,每一个分区都有其特定的作用,可根据…

有学生问我,重构是什么?我应该如何回答?

重构到底是什么?只是代码的推倒重新编码?还是有规则、有方法可寻?当然,结论肯定是有的,本文,我们通过一个简单的实例,来理解一下重构。 1.借助一个实例需求 这是一个影片出租店用的程序&#…