三层架构在SSM框架中应用的示意图
SSM,即 SpringMVC、Spring 与 MyBatis 三个框架
它们在三层架构中所处的位置是不同的,即它们在三层架构中的功能各不相同,各司其职
-
SpringMVC:作为 View 层的实现者,完成用户的请求接收功能。SpringMVC 的 Controller
作为整个应用的控制器,完成用户请求的转发及对用户的响应
-
MyBatis:作为 Dao 层的实现者,完成对数据库的增、删、改、查功能
-
Spring:以整个应用大管家的身份出现。整个应用中所有 Bean 的生命周期行为,均由
Spring 来管理。即整个应用中所有对象的创建、初始化、销毁,及对象间关联关系的维
护,均由 Spring 进行管理
Dao层
也叫作数据访问层,主要利用Mybatis这一优秀的持久化层框架实现代码与SQL语句的分离,消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索;
功能结构分为三层:
(1)API接口层:提供给外部使用的接口API,开发人员通过这些本地API来操纵数据库。接口层一接收到调用请求就会调用数据处理层来完成具体的数据处理。
(2)数据处理层:负责具体的SQL查找、SQL解析、SQL执行和执行结果映射处理等。它主要的目的是根据调用的请求完成一次数据库操作。
(3)基础支撑层:负责最基础的功能支撑,包括连接管理、事务管理、配置加载和缓存处理,这些都是共用的东西,将他们抽取出来作为最基础的组件。为上层的数据处理层提供最基础的支撑。
Service层
Spring是一个分层的轻量级Java开源框架,主要是提供一种方法来管理业务对象;
IOC容器管理:可通过注解或配置文件将物业对象自动注入到SpringIOC容器进行生命周期的管理,SpringIOC通过控制反转(IOC)来促进低耦合,实现依赖对象的被动传递,而不是让这个对象主动创建和查找所依赖的对象。
面向切面:Spring也提供了一种面向切面编程的支持,通过分离业务逻辑和系统服务,进行内聚性的开发,使得业务对象仅仅实现自己关注的业务逻辑,而不需要关注其他的点,不要干一些其他的副业。例如:日志或事物支持等。
支持事务:在实现业务逻辑时实现数据库事务的一般抽象化,允许声明式事务管理,简化了事务,使其与数据底层分离。
Spring的这些特征使的代码的编写更加干净、易于管理、便于测试,同时为Spring中的各模块提供了基础支持。
Web层
Spring MVC框架,主要利用中央控制器DispatcherServlet完成客户端发送的请求。
springMVC的工作原理:
1、客户端发出一个http请求给web服务器,web服务器对http请求进行解析,如果匹配DispatcherServlet的请求映射路径(在web.xml中指定),web容器将请求转交给DispatcherServlet.
2、DipatcherServlet接收到这个请求之后将根据请求的信息(包括URL、Http方法、请求报文头和请求参数Cookie等)以及HandlerMapping的配置找到处理请求的处理器(Handler)。
3-4、DispatcherServlet根据HandlerMapping找到对应的Handler,将处理权交给Handler(Handler将具体的处理进行封装),再由具体的HandlerAdapter对Handler进行具体的调用。
5、Handler对数据处理完成以后将返回一个ModelAndView()对象给DispatcherServlet。
6、Handler返回的ModelAndView()只是一个逻辑视图并不是一个正式的视图,DispatcherSevlet通过ViewResolver将逻辑视图转化为真正的视图View。
7、Dispatcher通过model解析出ModelAndView()中的参数进行解析最终展现出完整的view并返回给客户端。
SSM架构整合示意图
下图为高并发秒杀系统的Mybatis+Spring+Spring MVC三大框架整合示意图: