SSM(SpringMVC+Spring+Mybatis)

SpringMVC工作原理

  1. 浏览器发送指定的请求都会交给DispatcherServlet。
  2. DispatcherServlet会查找到HandleMapping,根据浏览器的请求找到对应的Controller。
  3. 该Controller处理完业务后,返回一个ModelAndView给DispatcherServlet。
  4. DispatcherServlet通过ViewResolver视图解析器找到对应的视图对象View。
  5. 视图对象View负责渲染,并返回到浏览器。

Spring

  • Spring是一个轻量级的控制反转(IOC)和面向切面(AOP)的容器(框架)。

  • Spring框架是一个分层架构,由7个定义良好的模块组成。Spring模块构建在核心容器之上,核心容器定义了创建、配置和管理bean的方式。

  • 组成Spring框架的每个模块(或组件)都可以单独存在,或者与其他一个或多个模块联合实现。每个模块的功能如下:

    1. 核心容器:核心容器提供Spring框架的基本功能。核心容器的组件主要是BeanFactory,他是工厂模式的实现。BeanFacory使用控制反转(IOC)模式将应用程序的配置和依赖性规范与实际的应用程序代码分开。
    2. Spring上下文:Spring上下文是一个配置文件,向Spring框架提供上下文信息。SPrng上下文包括企业服务,例如JNDI(Java Naming and Directory Interface,Java命名和目录接口)、EJB(Enterprise Java Beans技术的简称, 又被称为企业Java Beans)、电子邮件、国际化、校验和调度动能。
    3. Spring AOP:通过配置管理特性,SpingAOP模块直接面向切面的编程功能,集成到了Spring框架中。所以很容易地使Spring框架管理任何支持AOP的对象。SpringAOP模块基于Spring的应用程序中的对象提供了事务管理服务。通过使用SpringAOP,不用依赖组件,就可以声明事务管理集成到应用程序中。
    4. Spring DAO:JDBC DAO抽象层提供了有意义的异常层次结构,可用该结构来管理异常处理和不同数据库供应商抛出的错误信息。异常层次结构简化了错误处理,并且极大地降低了需要编写的异常代码数量(例如打开和关闭连接)。Spring DAO的面向JDBC的异常遵守从通用的DAO异常层次结构。
    5. Spirng ORM:Spring框架插入了若干个ORM(对象关系映射)框架,从而提供了ORM的对象关系工具,其中包括JDO(Java对象持久化的规范)、Hibernate(Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,它将POJO与数据库表建立映射关系,是一个全自动的orm框架)和iBatis SQL Map。所有这些都遵从Spring的通用事务和DAO异常层次结构。
    6. Spring Web模块:Web上下文模块建立在应用程序上下文模块之上,为基于Web的应用程序提供了上下文。所以,Spring框架支持与Jakarta Struts的集成。Web模块还简化了处理多部份请求以及将请求参数绑定到域对象的工作。
    7. Spring MVC框架:MVC框架是一个全功能的构建Web应用程序的MVC实现。通过策略接口,MVC框架便成为高度可配置的,MVC容纳了大量视图技术,其中包括JSP、Velocity、Tiles、iText和POI。
  • Spring Boot和Spring Cloud

    1. Spring Boot 是 Spring的一套快速配置脚手架,可以基于Spring Boot快速开发单个微服务。
    2. Spring Cloud是基于Spring Boot实现的。
    3. Spring Boot专注于快速、方便继承的单个微服务个体,Spring Cloud关注全局的服务治理框架。
    4. Spring Boot使用了约束优于配置的理念,很多集成方案已经帮你选择好了,能不配置就不配置,Spring Cloud很大的一部分是基于Spring Boot来实现,Spring Boot可以离开Spring Cloud独立使用开发项目,但是Spring Cloud离不开Spring Boot,属于依赖关系。
    5. Spring Boot在Spring Cloud中起到了承上启下的作用,如果你要学习Spring Cloud必须要学习Spring Boot。
  • IOC
    1.控制反转IOC(Inversion of Control),是一种设计思想,DI(依赖注入)是实现IOC的一种方法,也有人认为DI只是IOC的另一种说法。没有IOC的程序中,我们使用面向对象编程,对象的创建与对象之间的依赖关系完全硬编码在程序中,对象的创建由程序自己控制,控制反转后将对象的创建转给第三方,个人认为所谓控制反转就是:获得依赖对象的方式反转了。
    2.IOC是Spring框架的核心内容,使用多种方式完美的实现了IOC,可以i使用XML配置,也可以使用注解,新版本的Spring也可以零配置实现IOC。
    - 控制反转是一种通过描述(XML或注解)并通过第三方去生产或获取特定对象的方式。在Spring中实现控制反转的是IOC容器,其实现方法是依赖注入(DI)。
    - 控制:谁来控制对象的创建,传统应用程序的对象是由程序本身控制创建的,使用Spring后,对象是有Spring来创建的。
    - 反转:程序本身不创建对象,而变成被动的接收对象。

  • AOP

    1. AOP(Aspect Oriented Programming)意为:面向切面编程,通过预编译方式和运行期动态代理实现程序共功能的统一维护的一种技术。AOP是OOP的延续,是软件开发中的一个热点,也是Spring框架中的一个重要内容,是函数式编程的一种衍生泛型。利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率。
    2. AOP在Spring中的作用
    • 提供声明式事务,允许用户自定义切面
      AOP中的名词:
    • 横切关注点:跨越应用程序多个模块的方法或功能。即,与我们逻辑无关的,凡是我们需要关注的部分,就是横切关注点。如日志,安全,缓存,事务等等。
    • 切面(ASPECT):横切关注点被模块化的特殊对象。即,它是一个类。
    • 通知(Advice):切面必须要完成的工作。即,它是类中的一个方法。
    • 目标(Target):被通知对象。
    • 代理(Proxy):向目标对象应用通知之后创建的对象。
    • 切入点(PointCut):切面通知执行的“地点”的定义。
    • 连接点(JointPoint):与切入点匹配的执行点。

Mybatis

  • Mybatis是一款优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射。
  • 特点
    1. 简单易学:本身就很小且简单。没有任何第三方依赖,最简单安装只要两个jar文件+配置几个sql映射文件,易于学习、易于使用,通过文档和源代码,可以比较完全的掌握它的设计思路和实现。
    2. 灵活:mybatis不会对应用程序或者数据库的现有设计强加任何影响。sql写在xml里,便于统一管理和优化。通过sql语句可以满足操作数据库的所有需求。
    3. 解除sql与程序代码的耦合:通过提供DAO层,将业务员逻辑和数据访问逻辑分离,使系统的设计更清晰,更易维护,更易单元测试。sql和代码的分离,提高了可维护性。
    4. 提供映射标签,支持对象与数据库的orm字段关系映射。
    5. 提供对象关系映射标签,支持对象关系组件维护。
    6. 提供xml标签,支持编写动态sql。
  • 流程
    1. 加载配置并初始化
    • 触发条件:加载配置文件
    • 处理过程:将sql的配置信息加载成为一个个MappedStatement对象(包括了传入参数映射配置、执行的sql语句、结果映射设置),存储在内存中。
    1. 接收调用请求
    • 触发条件:调用Mybatis提供的API
    • 传入参数:为sql的ID和传入参数对象
    • 处理过程:将请求传递给下层的请求处理层进行处理
    1. 处理操作请求
    • 触发条件:API接口层传递请求过来
    • 传入参数:为sql的ID和传入参数对象
    • 处理过程:
      a. 根据sql的ID差找对应的MappedStatement对象。
      b. 根据传入参数对象解析MappedStatement对象,得到最终要执行的sql和执行传入参数。
      c. 获取数据库连接,根据得到的最终sql语句和执行传入参数到数据库执行,并得到执行结果。
      d. 根据MappedStatement对象中的结果映射配置对得到的执行结果进行转换处理,并得到最终的处理结果。
      e. 释放连接资源。
    1. 返回处理结果将最终的处理结果返回
  • 功能架构
    1. API接口层:提供给外部使用的接口API,开发人员通过这些本地API来操纵数据库。接口层一接受到调用请求就会调出数据处理层来完成具体的数据处理。
    2. 数据处理层:负责具体的sql查找、sql解析、sql执行和执行结果映射处理等。它主要的目的是根据调用的请求完成一次数据库操作。
    3. 基础支撑层:负责最基础的功能支撑,包括连接管理、事务管理、配置加载和缓存处理,这些都是共用的东西,将他们抽取出来作为最基础的组件。为上层的数据处理层提供最基础的支撑。
  • 框架架构
    1. 加载配置:配置来源于两个地方,一处是配置文件,一处是Java代码的注解,将sql的配置信息加载成为一个个MappedStatement对象(包括了传入参数映射配置、执行的sql语句、结果映射配置),存储在内存中。
    2. sql解析:当API接口层接受到调用请求时,会接收到传入sql的ID和传入对象(可以是Map、JavaBean或者基本数据类型),Mybatis会根据sql的ID找到对应的MappedStatement,然后根据传入参数对象对MappedStatement进行解析,解析后可以得到最重要执行的sql语句和参数。
    3. sql执行:将队中得到的sql和参数拿到数据库进行执行,得到操作数据库的结果。
    4. 结果映射:将操作数据库的结果按照映射的配置进行转换,可以转换成HashMap、JavaBean或者基本数据类型,并将最终结果返回。
      -动态SQL
      Mybatis最强大的特性之一就是它的动态语句功能。如果您以前有使用JDBC或者类似框架的经历,您就会明白把SQL语句条件连接在一起时多么的痛苦,要确保不能忘记空格或者不要在columns列后面省略一个逗号等。动态语句能够完全解决掉这些痛苦。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值