Java中Mybatis,SpringMVC,Spring的介绍及联系

 更新时间:2021年10月18日 11:41:58   作者:木泽锐  
这篇文章主要为大家详细介绍了Java中Mybatis,SpringMVC,Spring的介绍及联系,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

一、Mybatis

1、简介

MyBatis 是一个基于 Java 的持久层框架,是对 jdbc 的封装,它让数据库底层操作变的透明。Mybatis 的操作都是围绕一个 sqlSessionFactory 实例展开的。Mybatis 通过配置文件关联到各实体类的 Mapper 文件,Mapper 文件中配置了每个类对数据库所需进行的 sql 语句映射。在每次与数据库交互时,通过 sqlSessionFactory 拿到一个sqlSession,再执行 sql 命令。在 Mybatis 中,sqlSessionFactory 可以看为一个数据库连接池,并使用的单例模式;sqlSession 就相当于一个数据库连接,它存活在某个具体的业务请求中。 创建映射器 映射器是 Mybatis 中最重要、最复杂的组件,它由一个接口和对应的 XML 文件(或注解组成)。

2、工作原理:

mybatis通过sqlSessionFactoryBuilder从mybatis-config.xml配置文件(如上图第一步)中构建出sqlSessionFactory(线程安全);然后调用sqlSessionFactory的openSession()方法直接开启一个sqlSession,在通过sqlSession实例获得Mapper.xml对象并运行Mapper.xml映射的sql语句,完成对数据库的CRUD和事务提交,每完成一次操作之后sqlSession都需要关闭.

3、工作流程图:

在这里插入图片描述

二、SpringMVC

1、MVC工作原理:

M:Model(完成业务逻辑 Service/dao/entity/)

V:View(完成界面渲染 jsp/html)

C:Controller(控制器->类似于CPU 接受请求->调用M->返回V)

1.1、MVC工作原理图:

  

2、SpringMVC工作原理

SpringMVC是一个MVC的开源框架,SpringMVC是Spring的一个后续产品,其实就是Spring在原有基础上,又提供了web应用的MVC模块,可以简单的把SpringMVC理解为是spring的一个模块(类似AOP,IOC这样的模块),网络上经常会说SpringMVC和Spring无缝集成,其实SpringMVC就是Spring的一个子模块,所以根本不需要同spring进行整合。

2.1、SpringMVC中的组件:

前端控制器(DispatcherServlet):接收请求,响应结果,相当于电脑的CPU。

处理器映射器(HandlerMapping):根据URL去查找处理器

处理器(Handler):(需要程序员去写代码处理逻辑的)

处理器适配器(HandlerAdapter):会把处理器包装成适配器,这样就可以支持多种类型的处理器,类比笔记本的适配器(适配器模式的应用)

视图解析器(ViewResovler):进行视图解析,多返回的字符串,进行处理,可以解析成对应的页面

2.2、SpringMvc工作原理图

在这里插入图片描述

2.3、 SpringMvc工作流程

第一步:用户发起请求到前端控制器(DispatcherServlet)

第二步:前端控制器请求处理器映射器(HandlerMapping)去查找处理器(Handler):通过xml配置或者注解进行查找

第三步:找到以后处理器映射器(HandlerMappping)像前端控制器返回执行链(HandlerExecutionChain)

第四步:前端控制器(DispatcherServlet)调用处理器适配器(HandlerAdapter)去执行处理器(Handler)

第五步:处理器适配器去执行Handler

第六步:Handler执行完给处理器适配器返回ModelAndView

第七步:处理器适配器向前端控制器返回ModelAndView

第八步:前端控制器请求视图解析器(ViewResolver)去进行视图解析

第九步:视图解析器像前端控制器返回View

第十步:前端控制器对视图进行渲染

第十一步:前端控制器向用户响应结果

2.4、 SpringMVC重点

在于它的流程和注解,包括控制器、视图解析器、视图等内容;

三、Spring

1、简介:

Spring是一种多层的J2EE应用程序框架,其核心就是提供一种新的机制管理业务对象及其依赖关系。它是一种容器框架,用于创建bean,维护bean之间的关系,它可以管理web层,持久层,业务层等,可以配置各个层的组件并且维护各个层的关系

2、Spring原理:

内部最核心的就是IOC了,动态注入,让一个对象的创建不用new了,可以自动的生产,这其实就是利用java里的反射,反射其实就是在运行时动态的去创建、调用对象,Spring就是在运行时,跟xml Spring的配置文件来动态的创建对象,和调用对象里的方法的 。

Spring还有一个核心就是AOP这个就是面向切面编程,可以为某一类对象 进行监督和控制(也就是 在调用这类对象的具体方法的前后去调用你指定的 模块)从而达到对一个模块扩充的功能。这些都是通过 配置类达到的。

Spring目的:就是让对象与对象(模块与模块)之间的关系没有通过代码来关联,都是通过配置类说明管理的(Spring根据这些配置 内部通过反射去动态的组装对象)

要记住:Spring是一个容器,凡是在容器里的对象才会有Spring所提供的这些服务和功能。

Spring里用的最经典的一个设计模式就是:模板方法模式。(这里我都不介绍了,是一个很常用的设计模式), Spring里的配置是很多的,很难都记住,但是Spring里的精华也无非就是以上的两点,把以上两点跟理解了 也就基本上掌握了Spring.

3、Spring AOP与IOC

3.1、 IoC(Inversion of control): 控制反转

1、IoC:

概念:控制权由对象本身转向容器;由容器根据配置文件去创建实例并创建各个实例之间的依赖关系

核心:bean工厂;在Spring中,bean工厂创建的各个实例称作bean

3.2、AOP(Aspect-Oriented Programming): 面向方面编程

1、 代理的两种方式:

静态代理:

  • 针对每个具体类分别编写代理类;
  • 针对一个接口编写一个代理类;

动态代理:

针对一个方面编写一个InvocationHandler,然后借用JDK反射包中的Proxy类为各种接口动态生成相应的代理类

动态代理知识补充:

不用写代理类,虚拟机根据真实对象实现的接口产生一个类,通过类实例化一个动态代理,在实例化动态代理时将真实对象及装备注入到动态代理中,向客户端公开的是动态代理,当客户端调用动态代理方法时,动态代理根据类的反射得到真实对象的Method,调用装备的invoke方法,将动态代理、

Method、方法参数传与装备的invoke方法,invoke方法在唤起method方法前或后做一些处理。

         1、产生动态代理的类:

                        java.lang.refect.Proxy

         2、装备必须实现InvocationHandler接口实现invoke方法

3.3、spring的几个阶段:

在这里插入图片描述

总结

本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注脚本之家的更多内容!

相关文章

  • 浅谈Java序列化和反序列化为何要实现Serializable接口

    浅谈Java序列化和反序列化为何要实现Serializable接口

    这篇文章主要介绍了浅谈Java序列化和反序列化为何要实现Serializable接口,序列化最重要的作用是在传递和保存对象时.保证对象的完整性和可传递性,对象转换为有序字节流,以便在网络上传输或者保存在本地文件中,需要的朋友可以参考下
    2023-12-12
  • java自带命令行工具jmap、jhat与jinfo的使用实例代码详解

    java自带命令行工具jmap、jhat与jinfo的使用实例代码详解

    本篇文章主要通过代码实例对java自带命令行工具jmap、jhat与jinfo的使用做出了详解,需要的朋友可以参考下
    2017-04-04
  • IDEA导入JDBC驱动的jar包步骤详解

    IDEA导入JDBC驱动的jar包步骤详解

    JDBC是一种底层的API,是连接数据库和Java应用程序的纽带,因此我们在访问数据库时需要在业务逻辑层中嵌入SQL语句,这篇文章主要介绍了IDEA导入JDBC驱动的jar包,需要的朋友可以参考下
    2023-07-07
  • 使用hutool进行ftp文件下载和上传详细代码示例

    使用hutool进行ftp文件下载和上传详细代码示例

    在开发Java项目时,FTP客户端是经常需要使用的工具,因为FTP协议在文件传输方面有着广泛的应用,这篇文章主要给大家介绍了关于使用hutool进行ftp文件下载和上传的相关资料,需要的朋友可以参考下
    2024-02-02
  • SpringMVC+MyBatis 事务管理(实例)

    SpringMVC+MyBatis 事务管理(实例)

    本文先分析编程式注解事务和基于注解的声明式事务。对SpringMVC+MyBatis 事务管理的相关知识感兴趣的朋友一起学习吧
    2017-08-08
  • SpringBoot实现文件下载的限速功能

    SpringBoot实现文件下载的限速功能

    在SpringBoot项目中,实现文件下载的限速功能可以有效控制服务器带宽的占用,并防止单个用户消耗过多的资源,本文将通过具体的代码示例和详细的流程解释,介绍如何在SpringBoot项目中实现文件下载的限速功能,需要的朋友可以参考下
    2024-07-07
  • Springboot单元测试无法读取配置文件的解决方案

    Springboot单元测试无法读取配置文件的解决方案

    这篇文章主要介绍了Springboot单元测试无法读取配置文件的解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-01-01
  • java调用未知类的指定方法简单实例

    java调用未知类的指定方法简单实例

    这篇文章介绍了java调用未知类的指定方法简单实例,有需要的朋友可以参考一下
    2013-09-09
  • Java点餐小程序之黑心商人

    Java点餐小程序之黑心商人

    这篇文章主要介绍了一个Java编程的小程序-点餐系统,算是对之前所学习的Java基础知识作了一个汇总,需要的朋友可以参考下
    2017-09-09
  • Spring Boot  Excel文件导出下载实现代码

    Spring Boot Excel文件导出下载实现代码

    这篇文章带领我们直接实现Excel文件的直接导出下载,后续开发不需要开发很多代码,直接继承已经写好的代码,增加一个Xml配置就可以直接导出。具体实现代码大家跟随小编一起通过本文学习吧
    2018-11-11

最新评论