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的整合的基本流程的梳理
我确实没有写我们用到的具体的类,以及我们具体的操作,流程主要辅助,还是多练手感,不用看流程也就知道了。