純代碼配置SSM
框架 (一)
SSM
框架簡介
SSM
框架是由三套框架整合起來的。分別是 Spring
、Spring MVC
、Mybatis
。
Spring
框架
Spring
是一個控制反轉(IoC
)和麪向切面(AOP
)的容器框架,適用於任何Java
應用。
控制反轉 IoC
控制反轉(IoC
)是指對象的創建權交給Spring
容器,其作用是實現了程序的解耦合,對象創建的控制權不是使用者
,而是框架
或者容器
。例如:想要調用類裏面一個非靜態方法,首先要通過 new
實例化一個對象,然後通過這個實例調用相關的方法 method
。但是在 Spring
中,Spring
創建對象的過程,不是在代碼裏面實現的,而是交給 Spring
來進行配置實現的,其基本原理就是 XML配置文件+SAX解析+工廠設計模式
;
面向切面 AOP
OOP
技術,允許開發者定義縱向的關係,但並不適合定義橫向的關係。AOP
技術,將那些影響了多個類的公共行爲封裝到一個可複用模塊,這個就是所謂的切面(Aspect)
。切面
是那些與業務無關,卻爲業務模塊所共同調用的邏輯或責任封裝起來,便於減少系統的重複代碼,降低模塊之間的耦合度,並有利於未來的可操作性和可維護性。最常見的使用到AOP
技術就是日誌功能。
AOP
核心概念
- 連接點(
Joinpoint
):被攔截到的點可能是字段
、構造器
、或者方法
。Spring
只支持方法類型的連接點。 - 橫切關注點:對哪些方法進行攔截,攔截後怎麼處理,稱之爲橫切關注點。
- 切面(
aspect
):類是對物體特徵的抽象,切面就是對橫切關注點的抽象。 - 切入點(
pointcut
):對連接點進行攔截的定義。 - 通知(
advice
):指攔截到連接點之後要執行的代碼。通知分爲前置
、後置
、異常
、最終
、環繞
通知五類。 - 目標對象:代理的目標對象。
- 織入(
weave
):將切面應用到目標對象並導致代理對象創建的過程。 - 引入(
introduction
):在不修改代碼的前提下,引入可以在運行期爲類動態地添加一些方法或字段。
Spring
中AOP
代理由Spring
的IoC
容器負責生成、管理,其依賴關係也由IoC
容器負責管理。因此AOP
代理可以直接使用容器中的其它bean
實例作爲目標,這種關係可由IoC
容器的依賴注入提供。
代理規則
Spring
創建代理的規則:
- 默認使用
Java
動態代理來創建AOP
代理,可以爲任何接口實例創建代理 - 當需要代理的類不是代理接口的時候,
Spring
會切換爲使用CGLIB
代理,也可強制使用CGLIB
代理。
Spring MVC
框架
Spring MVC
是Spring
提供的一個強大而靈活的web
框架。藉助於註解,Spring MVC
提供了幾乎是POJO
的開發模式,使得控制器的開發和測試更加簡單。這些控制器一般不直接處理請求,而是將其委託給Spring
上下文中的其他bean,通過Spring
的依賴注入功能,這些bean
被注入到控制器中。
Spring MVC
主要由DispatcherServlet
、處理器映射
、處理器(控制器)
、視圖解析器
、視圖
組成。他的兩個核心是兩個核心:
1. 處理器映射:選擇使用哪個控制器來處理請求。
2. 視圖解析器:選擇結果應該如何渲染。
Spring MVC
接口
Spring MVC
主要有四個接口,DispatcherServlet
接口、HandlerMapping
接口、Controller
接口、ViewResolver
接口。
DispatcherServlet
接口:所有的請求都有經過它來統一分發。他將請求分發給Spring Controller
之前,需要藉助於Spring
提供的HandlerMapping
定位到具體的Controller
。HandlerMapping
接口:完成客戶請求到Controller映射。Controller
接口:用於處理用戶請求。Controller
處理完用戶請求,返回ModelAndView
對象給DispatcherServlet
前端控制器,ModelAndView
中包含了模型(Model
)和視圖(View
)。ViewResolver
接口:Spring
提供的視圖解析器(ViewResolver
)在Web
應用中查找View
對象,從而將相應結果渲染給客戶。
DispatcherServlet
DispatcherServlet
是Web
應用的控制器,是Spring MVC
的核心。它負責接收HTTP
請求組織協調Spring MVC
的各個組成部分。
- 截獲符合特定格式的
URL
請求。 - 初始化
DispatcherServlet
上下文對應WebApplicationContext
,並將其與業務層、持久化層的WebApplicationContext
建立關聯。 - 初始化
Spring MVC
的各個組成組件,並裝配到DispatcherServlet
中。
MyBatis
框架
MyBatis
是一個支持普通SQL
查詢,存儲過程和高級映射的優秀持久層框架(ORM
框架)。MyBatis
儘可能消除JDBC
代碼和參數的手工設置以及對結果集的檢索封裝。MyBatis
可以使用簡單的XM
L或註解
用於配置和原始映射,將接口和Java
的POJO
(Plain Old Java Objects
,普通的Java對象)映射成數據庫中的記錄。