《深入分析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的優缺點

優點


缺點


讀書筆記腦圖


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章