1.IOC和DI
IOC和DI是Spring核心思想不同方面的描述,IOC和DI是差不多的概念,重要特征是接口依賴,是把對象關系推遲到運行時去確定
1.1控制反轉(Inversion of Control):
控制反轉是一個重要的面向以對象編程的法則來削減計算機程序的耦合問題,也是輕量級Spring框架的核心,beans。
IOC控制反轉:創建對象實例控制權從代碼中剝離到IOC容器控制,就是在XML文件控制,側重原理。
對於面向接口編程的應用IOC的做法:對象A依賴接口C,接口C由B來實現,也就是說對象A並不能直接控制B,而是由實現接口C的B去處理,
這樣一來也就是控制反轉過來了,是由B來決定的,而不是A。
1.2DI依賴注入(Dependency Injection):
創建對象實例時,為這個對象注入屬性值或其他對象實例,側重實現。
它是一個初始化實例的過程,分為三種:1.setter based 2.constructor based 3.interface based,在Spring中就是應用前兩種
但不僅僅是初始化實例,而是用接口的概念去實現依賴注入。靜態的看,是依賴一個接口但實際運行起來是依賴接口的實現類。
2.AOP
aop(Aspact Oriented Programming)
我們構建系統的目的是解決業務問題,卻要維護如此繁多且復雜的多個方面的事情,增加了開發、擴展和維護的難度。這些方面又都是不可或缺的,不能丟開不管。怎樣才 能“專心”做事?
AOP的目標(作用):讓我們可以“專心做事” 日志記錄,事務處理,異常捕獲,緩存操作。
AOP原理
將復雜的需求分解出不同方面,將散布在系統中的公共功能集中解決
采用代理機制組裝起來運行,在不改變原程序的基礎上對代碼段進行增強處理,增加新的功能
3.構造注入
在Spring配置文件中通過<constructor-arg>元素為構造方法傳參
注意:
1.一個<constructor-arg>元素表示構造方法的一個參數,且使用時不區分順序。
2.通過<constructor-arg>元素的index 屬性可以指定該參數的位置索引,位置從0 開始。
3.<constructor-arg>元素還提供了type 屬性用來指定參數的類型,避免字符串和基本數據