1、Spring是什麼?
Spring是一個基於IOC和AOP的結構J2EE系統的框架 ,Spring的核心是控制反轉(IoC)和麪向切面(AOP)。
applicationContext.xml,Spring核心配置文件。
2、IOC(反轉控制)
IOC 反轉控制 是Spring的基礎,Inversion Of Control ,簡單說就是創建對象由以前的程序員自己new 構造方法來調用,變成了交由Spring創建對象,DI 依賴注入 Dependency Inject. 簡單地說就是拿到的對象的屬性,已經被注入好相關值了,直接使用即可。
2.1、通過spring獲取Category對象,以及該對象被注入的name屬性(Spring 可以創建實體類對象),以獲取對象的方式來進行比較:
傳統的方式:
通過new 關鍵字主動創建一個對象
IOC方式:
對象的生命週期由Spring來管理,直接從Spring那裏去獲取一個對象。 IOC是反轉控制 (Inversion Of Control)的縮寫,就像控制權從本來在自己手裏,交給了Spring。
3、AOP(面向切面編程)
AOP 即 Aspect Oriented Program 面向切面編程 ,首先,在面向切面編程的思想裏面,把功能分爲核心業務功能,和周邊功能。
所謂的核心業務,比如登陸,增加數據,刪除數據都叫核心業務,所謂的周邊功能,比如性能統計,日誌,事務管理等等 。
周邊功能在Spring的面向切面編程AOP思想裏,即被定義爲切面,在面向切面編程AOP的思想裏面,核心業務功能和切面功能分別獨立進行開發 然後把切面功能和核心業務功能 "編織" 在一起,這就叫AOP。
3.1、AOP的過程分爲兩步:1,在業務類中插入切入點,2,將切入點和切面類關聯起來
<aop:config>
<!--這表示對滿足如下條件的方法調用,進行切面操作:* 返回任意類型com.how2java.service.ProductService.* 包名以 com.how2java.service.ProductService 開頭的類的任意方法(..) 參數是任意數量和類型-->
<aop:pointcut id="loggerCutpoint" expression="execution(* service.ProductService.*(..))" />
<!--聲明切入點-->
<aop:aspect id="logAspect" ref="loggerAspect">
<!--指定輔助功能--><!--聲明切面,切入點被執行就執行切面 -->
<aop:around pointcut-ref="loggerCutpoint" method="log" />
<!--執行切面類裏的方法-->
<!--一個切點是可以關聯多個切面的,一個切面只能關聯一個方法-->
</aop:aspect>
</aop:config>