SSM框架简介
SSM(Spring+SpringMVC+MyBatis)框架集由Spring、MyBatis两个开源框架整合而成(SpringMVC是Spring中的部分内容)。SSM常作为数据源较简单的web项目的框架。

SpringMVC
SpringMVC在项目中拦截用户请求,它的核心Servlet即DispatcherServlet承担中介的职责,将用户请求通过HandlerMapping去匹配Controller,Controller就是具体对应请求所执行的操作。
SpringMVC框架运行流程

用户将请求发送至DispatcherServlet;
DispatcherServlet收到请求查询一个或多个HandlerMapping,找到处理该请求的Handler;
HandlerMapping根据请求找到相应的Handler,生成Handler对象返回给DispatcherServlet;
DispatcherServlet通过HandlerAdapter调用Handler;
Handler(Controller)调用业务逻辑(service)进行处理,处理完成返回ModelAndView;
HandlerAdapter将Handler处理结果ModelAndView返回给DispatcherServlet;
DispatcherServlet查询一个或多个ViewReslover(视图解析器),将ModelAndView传给指定的ViewReslover;
ViewReslover解析后返回具体View给DispatcherServlet;
DispatcherServlet对View进行渲染(将模型数据填充至视图中);
DispatcherServlet响应用户,View将结果显示在客户端。

DispatcherServlet是整个Spring MVC的核心,它负责接收HTTP请求,组织协调Spring MVC的各个组成部分,其主要的工作有以下3项:
a. 截获符合特定格式的URL请求;
b. 初始化DispatcherServlet上下文对应的WebApplicationContext,并将其与业务层、持久层的WebApplicationContext建立关联;
c. 初始化Spring MVC的各个组件,并配装到DispatcherServlet中。
Spring
Spring就像是整个项目中装配bean的大工厂,在配置文件中可以指定使用特定的参数去调用实体类的构造方法来实例化对象。也可以称之为项目中的粘合剂。
Spring的核心思想是IOC(控制反转),即不再需要程序员去显式地new一个对象,而是让Spring框架帮你来完成这一切。IOC容器负责实例化、定位、配置应用程序中的对象及建立这些对象间的依赖。Spring的目的就是让对象与对象(模块与模块)之间的关系没有通过代码来关联,都是通过配置类说明管理的(Spring根据这些配置,内部通过反射去动态的组装对象)。
IOC容器代表的就是org.springframework.beans包中的BeanFactory接口,其提供了IOC容器的基本功能;而org.springframework.context包下的ApplicationContext接口扩展了BeanFactory,还提供了与Spring AOP集成、国际化处理、事件传播及提供不同层次的context实现。
简单说,BeanFactory提供了IOC容器最基本功能,而ApplicationContext则增加了更多支持企业级功能支持。ApplicationContext完全继承BeanFactory,因而BeanFactory所具有的语义也适用于ApplicationContext。
Spring运行流程

加载配置文件,ApplicationContext接口。配置文件中的bean的信息被加载在HashMap中,一个bean通常包括,id,class,property等,bean的id对应HashMap中的key,HashMap中的value就是bean。
调用getBean方法,getBean是用来获取applicationContext.xml文件里bean的,参数是bean的id。一般情况都会强制转换成对应的业务层(接口)。
调用业务层(接口实现)的方法。
bean中的内容是怎么注入进去的?简单来讲,就是在实例化一个bean时,实际上就实例化了类,它通过反射调用类中set方法将事先保存在HashMap中的类属性注入到类中。这样就回到了我们Java最原始的地方,对象.属性,对象.方法。
Mybatis
Mybatis是对jdbc的封装,它让数据库底层操作变的透明。Mybatis的操作都是围绕一个sqlSessionFactory实例展开的。mybatis通过配置文件关联到各实体类的Mapper文件,Mapper文件中配置了每个类对数据库所需进行的sql语句映射。在每次与数据库交互时,通过sqlSessionFactory拿到一个sqlSession,再执行sql命令。
Mybatis通过MapperProxy动态代理dao,也就是说,当执行自己写的dao里面的方法的时候,其实是对应的MapperProxy在代理。
Mybatis运行原理

加载配置文件
将SQL的配置信息加载成为一个个MappedStatement对象,包括了参数映射配置,执行的SQL语句,结果映射配置,存储在内存中。
SQL解析
当API接口层接收到调用请求时,会接收到传入SQL的ID和传入对象(可以是Map/JavaBean或者基本数据类型),Mybatis会根据SQL的ID找到对应的MappedStatement,然后根据传入的参数对象MappedStatement进行解析,解析后可以得到最终要执行的SQL语句和参数。
SQL执行
将最终得到的SQL和参数拿到数据库执行,得到操作数据库的结果。
结果映射
将操作数据库的结果按照映射的配置进行转换,可以转换成HashMap/JavaBean或者基本数据类型,并将最终的结果返回。

SSM框架的原理和运行流程相关推荐

  1. MR的原理和运行流程

    文章目录 MR的原理和运行流程 Map的运行过程 Reduce处理过程 Shuffle过程 MR运行过程 Yarn && Job MR的原理和运行流程 Map的运行过程 以HDFS上的 ...

  2. python基础爬虫的框架以及详细的运行流程

    网络爬虫是什么? 网络爬虫就是:请求网站并提取数据的自动化程序 网络爬虫能做什么? 网络爬虫被广泛用于互联网搜索引擎或其他类似网站,可以自动采集所有其能够访问到的页面内容,以获取或更新这些网站的内容和 ...

  3. SSM框架工作原理、作用及使用方法

    作用: SSM框架是spring MVC ,spring和mybatis框架的整合,是标准的MVC模式,将整个系统划分为表现层,controller层,service层,DAO层四层 使用spring ...

  4. springboot中缓存技术的使用、原理及其运行流程

    Springboot中缓存的工作原理 要想在springboot中使用缓存,首先要了解springboot中缓存的工作原理. 我们知道springboot在启动时会有很多的自动配置类(xxx-Auto ...

  5. 使用idea搭建SSM框架,并成功运行。

    1.搭建环境 1. 前4步跟搭建Spring项目环境是一样的,请参考本人博客的Spring框架学习01. 2.在pom.xml中引入相关依赖 相关测试依赖 <dependency>< ...

  6. Python爬虫之Scrapy框架系列(1)——初识Scrapy框架【安装+简介+运行流程+组件介绍】

    目录: 1.Scrapy模块安装 2.Scrapy框架简介 2.1 Scrapy是个啥? 2.2 我们为啥要用这玩意呢? 3.运行流程 3.1 引入: 3.2 进入正题: 3.3 数据流: 3.4 中 ...

  7. JAVA毕设——宠物生活馆管理系统SSM框架MySQL数据库完美运行

    本项目是一个宠物生活馆管理系统,使用SSM框架搭建,使用MySQL数据库完美运行 可以用作一个宠物生活馆的后台,处理各种有关信息很方便,可以作为毕业设计使用,代码规整 可以添加很多功能,关于工作人员信 ...

  8. java流程审批_基于SSM框架下的JAVA企业流程审批系统

    每天记录学习,每天会有好心情.*^_^* 今天将为大家分析一个企业流程审批系统(现代企业对资金流的控制十分严格,但是绝大部分企业的费用审批还停滞在手动填单.逐级递交.逐级审批的现状,既没有效率也不利于 ...

  9. Netty框架架构解析+API+运行流程+网络编程文章集锦

    新手入门:目前为止最透彻的的Netty高性能原理和框架架构解析 <!-- 作者区域 --><div class="author"><a class=& ...

  10. java审批流程框架_基于SSM框架下的JAVA企业流程审批系统

    每天记录学习,每天会有好心情.*^_^* 今天将为大家分析一个企业流程审批系统(现代企业对资金流的控制十分严格,但是绝大部分企业的费用审批还停滞在手动填单.逐级递交.逐级审批的现状,既没有效率也不利于 ...

最新文章

  1. uln2003驱动蜂鸣器_让蜂鸣器发声
  2. java兔子问题编程思路详解_Java算法之“兔子问题”
  3. Python正则表达式模式备忘表
  4. db模块未绑定 Uncaught TypeError: Cannot read property 'openDatabase' of undefined
  5. android 如何解锁屏幕,2解锁屏幕破裂Android手机的方法(自由方式)
  6. 如何正确的寻找电影资源
  7. 手游内存辅助开发教程
  8. c语言 计算机 只用if,C语言if语句的用法
  9. 中南财经政法大学2014-2015学年学生奖励汇总表
  10. Matlab实现Q-criterion涡结构可视化
  11. python过滤_在纯Python中映射,过滤和减少
  12. 联通光猫TEWA-800E设置桥接模式
  13. 阿里再发10亿助农,店宝宝:中小卖家喜迎流量红利
  14. 棚卸資産管理の用語一覧(Glossary of inventory control terms and phrases)
  15. Android so库开发——Swig工具使用(五)
  16. 《SQL Server2008R2数据挖掘与商业智能》实例——决策树
  17. idea中重新加载新的依赖方法
  18. 字节跳动青训营Day01 - 实战项目 - 在线翻译字典
  19. 开源流媒体服务器SRS学习笔记(1) - 安装、推流、拉流
  20. 将Matlab的多幅图片制成GIF

热门文章

  1. 亚马逊Alexa Connect Kit(ACK)
  2. 发家致富:爬取双色球信息并统计
  3. android 如何清除应用数据恢复,手机删除数据如何恢复?手机数据恢复方法【图文教程】...
  4. Xenu-死链接检测工具
  5. 2007所做更改会影响共用模板normal
  6. C++编写的常用软件(找找方向)
  7. 「大数据干货」基于Hadoop的大数据平台实施——整体架构设计
  8. 用C++写一个简单的表白小程序
  9. 微信公众号开发之发送模板消息
  10. 数据库系统原理——数据库编程