這三個框架在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的優缺點
優點:
缺點:
讀書筆記腦圖