学习完SSM框架之后, 对以前JavaWeb的原生方式, 以及对应的MVC架构有了新的理解, 特此总结.
这一篇只谈架构, 不谈技术细节
先谈一下MVC
什么是MVC ? :
MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,(下图来自B站up主 我是莫提)
以前在JavaWeb阶段, MVC的实现主要是用以下方式实现的:
M(Model) : pojo(实体类), 业务层(在项目中常常被命名为service包), dao(JDBC, Druid)等
V(View) : JSP , HTML
C(Controller) : Servlet
其实, 我们不用学SSM框架, 也能用JavaWeb的那些技术构建一个B/S架构的项目, 而且项目是遵循MVC架构的. 学了SSM框架, 只不过是在MVC这三个层面, 对应替换了原生JavaWeb的那些技术而已.
M(Model) : dao层和service层就是MVC中的M层 -> dao层是MyBatis做的事 , Spring会控制service层
V(View) : jsp和html组成了MVC的V(View)层, 负责进行数据展示 -> SpringMVC建立起V和C的桥梁
C(Controller) : Controller包下对应的MVC的C(Controller)层,该包下都是一些servlet -> SpringMVC做的事
那么Spring做的事呢? 就是整合SpringMVC和MyBatis, 同时控制Service层
下图很好的表示了SSM框架对应MVC架构的关系(图来源于黑马程序员)
DAO层就是定义了数据库的操作, 里面大都是增删改查的代码和方法
DAO, M(module)层 -> 通通用的是MyBatis框架
用到的配置文件: SSM中, 常用配置文件的头以及他们相互之间关系
Service层, 负责调用dao层.前面又会有层(Controller层)负责调用业务层
业务层不单单调用dao层的方法, 每个业务层方法还会有它自己的逻辑.执行了一些其他的操作,
这个逻辑用AOP的方式横切进去就能搞定
MyBatis整合Spring框架.配置文件是spring-dao.xml(名字可以随便取), 用到的技术是MyBatis-Spring, 它需要在pom.xml中导入坐标:
<dependency>
<groupId>org.mybatisgroupId>
<artifactId>mybatis-springartifactId>
<version>2.0.2version>
dependency>
Spring要整合3个地方:
一个是dao层. 用到MyBatis-Spring
另一个要整合的地方就是Service层. 因为要配置事务.
最后一个要整合的地方是SpringMVC
Spring就是个大杂烩, 用来整合 IOC和AOP, 管理所有的bean的生命周期行为, 以及整合MyBatis和SpringMVC.
这里是对应的MVC的C(Controller层), 在项目中位于Controller包下. 该包下都是一些Servlet
要想使用SpringMVC, 首先需要将普通项目转换成Web项目.
鼠标移动到idea左侧项目树, 右键要转换的模块 -> Add Framework Support
我们开发的B/S架构的系统, 一般流程是这样的:
坐在电脑前的你->访问前端->前端和Controller交互->Controller调用Service->Service调Dao->Dao连接数据库
看懂了SSM框架对应的MVC架构的关系, 我们就能总结出来一些设计模式的原则. 也就是说, 来了新业务,从下往上写比较好,先写Dao层然后-> Service-> controller 这样可以避免重复代码。
但是设计,架构的话一般是自顶向下。
以上是我的个人见解,欢迎大家讨论,指正。