《深入分析JavaWeb技术内幕》读书笔记九.Spring,SpringMVC,MyBatis

这三个框架在JavaWeb项目中非常常见,书中也对它们进行了相关介绍,但书中讲的是iBatis,我这里则介绍MyBatis。这三个框架都非常优秀,也不是三言两语能讲清楚的,我这里只是对它们的架构和原理进行简单的介绍,具体应用请自行学习。

Spring

Spring的骨骼架构

从这幅图中我们可以看出Spring的核心组件只有三个:CoreContextBean。它们构建起了整个Spring的骨骼架构,没有它们就不可能有AOP、Web等上层的特性功能。下面我们也主要从这三个组件入手分析Spring。

Spring的设计理念

核心组件如何协同工作

书中有关于这三个核心组件更详细的介绍,这里不再赘述。

BeanFactory和FactoryBean

从名字我们就能看出BeanFactory是一个工厂类而FactoryBean是一个Bean。

BeanFactory负责实例化、定位、配置应用程序中的对象及建立这些对象间的依赖。而FactoryBean则书中有详细讲解:

Spring中的AOP

Spring通过动态代理实现AOP(Aspect Oriented Programming),即面向切面的编程。利用AOP可以对业务逻辑的各个部分进行隔离,

从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率。

实现动态代理一般有两个方法,一个是Java的JDK自带的动态代理,一个是CGLIB类代理,我专门写过代理模式的文章,请读者们自

行阅读。

书中还介绍了策略模式,这个我也写过。

SpringMVC

由于Spring框架的流行,与之无缝结合的SpringMVC框架自然备受欢迎。

SpringMVC的组件图

SpringMVC处理流程及初始化

我们先大致看一下SpringMVC的处理流程:

这里说一下DispatcherServlet。这个类继承自HttpServlet,在Servlet的init方法调用时DispatcherServlet执行SpringMVC的初始化工作

Control设计

Model设计

View设计

关于框架的设计与思考

我们需要什么样框架?

框架设计原则

最后书中还提了模板模式,这里我不再赘述,设计模式我都总结过。

MyBatis

书中介绍的是iBatis,但现在大多用的是MyBatis,MyBatis也是从iBatis发展而来的。所以我就讲讲MyBatis吧。

什么是MyBatis?

MyBatis 是支持定制化 SQL、存储过程以及高级映射的优秀的持久层框架。MyBatis 避免了几乎所有的 JDBC 代

码和手工设置参数以及抽取结果集。MyBatis 使用简单的 XML 或注解来配置和映射基本体,将接口和 Java 的

POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。  

MyBatis是iBatis的升级版,用法有很多的相似之处,但是MyBatis进行了重要的改进。例如:

MyBatis的架构与流程图

MyBatis原理简介


MyBatis有一个很大的优点就是实现了接口式编程,它通过动态代理来避免了编写DAO层的代码。
通过配置文件的namespace与某个具体接口全名对应,通过id与接口中的方法对应,通过parameterType | parameterClass对应方法的参数,通过resultType | resultClass与方法返回值对应。可以用resultMap定制返回值,非常灵活。

它还提供拦截器功能来封装一些公用操作,如分页。
拦截器实现Interceptor接口,并在类上用注解:
@Intercepts({@Signature(type=....class,method="...",args={....class})})
type指向所要拦截的接口的class  method指向要拦截的方法  args是方法参数,比如:
@Intercepts({@Signature(type=StatementHandler.class,method="prepare",args={Connection.class})})
一般用法是拦截构造好的SQL,对其进行重新构造,然后再送去执行。原理是反射。

MyBatis提供了分离并定制SQL的功能,还可以调用存储过程,是擅长SQL的程序员的装逼利器。

MyBatis的优缺点

优点


缺点


读书笔记脑图


  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值