《深入分析JavaWeb技术内幕》读书笔记九.Spring,SpringMVC,MyBatis
这三个框架在JavaWeb项目中非常常见,书中也对它们进行了相关介绍,但书中讲的是iBatis,我这里则介绍MyBatis。这三个框架都非常优秀,也不是三言两语能讲清楚的,我这里只是对它们的架构和原理进行简单的介绍,具体应用请自行学习。
Spring
Spring的骨骼架构
从这幅图中我们可以看出Spring的核心组件只有三个:Core、Context和Bean。它们构建起了整个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层的代码。
MyBatis的优缺点
优点:
缺点: