spring框架核心
Spring的IOC.Spring就是一個大的工廠,通過工廠對Bean進行管理.
* Spring中的IOC:
* IOC:控制反轉.將物件的建立權交給Spring管理.
* DI:依賴注入.在由Spring建立的物件的時候,將物件依賴的物件注入進來.
控制反轉 inversion on Control :物件的建立交給外部容器完成
依賴注入:dependency injection 處理物件依賴的關係 控制反轉是解決物件建立的問題,物件的關係的處理是依賴注入,注入到容器中
AOP:面向切面程式設計。 原理是控制反轉和動態代理。
作用:可以解決物件建立以及物件之間依賴關係。
通過註解的方式,把物件加入ioc容器。
建立物件以及處理物件依賴關係,相關的註解:
@Component 指定把一個物件加入IOC容器
@Repository 作用同@Component; 在持久層使用
@Service 作用同@Component; 在業務邏輯層使用
@Controller 作用同@Component; 在控制層使用
@Resource 屬性注入
3.動態代理
1)代理物件,不需要實現介面;
2)代理物件的生成,是利用JDKAPI, 動態的在記憶體中構建代理物件
動態代理總結:代理物件不需要實現介面,但是目標物件一定要實現介面;否則不能用 動態代理!
4.Cglib代理
也叫做子類代理。在記憶體中構建一個子類物件從而實現對目標物件功能的擴充套件。
JDK的動態代理有一個限制,就是使用動態代理的物件必須實現一個或多個介面。如果想代理沒有實現介面的類,就可以使用CGLIB實現。
CGLIB是一個強大的高效能的程式碼生成包,它可以在執行期擴充套件Java類與實現Java介面。它廣泛的被許多AOP的框架使用,例如Spring AOP和dynaop,為他們提供方法的interception(攔截)。
CGLIB包的底層是通過使用一個小而快的位元組碼處理框架ASM,來轉換位元組碼並生成新的類。不鼓勵直接使用ASM,因為它要求你必須對JVM內部結構包括class檔案的格式和指令集都很熟悉。
5.AOP
Aop, aspect object programming 面向切面程式設計
功能: 讓關注點程式碼與業務程式碼分離!
關注點, 重複程式碼就叫做關注點;
切面,關注點形成的類,就叫切面(類)!
面向切面程式設計,就是指對很多功能都有的重複的程式碼抽取,再在執行的時候往網業 務方法上動態植入“切面類程式碼”。
切入點,執行目標物件方法,動態植入切面程式碼。
可以通過切入點表示式,指定攔截哪些類的哪些方法; 給指定的類在執行的時候 植入切面類程式碼。
分析總結:
關注點程式碼,就是指重複執行的程式碼。