SSM框架(Spring+SpringMVC+MyBatis)之 Spring 核心,主要做兩件事。
(1) 管理對象(IoC/DI)----- 控制反轉/依賴注入 ----- IoC控制對象的創建 ----- 對象、對象、對象(重要事情 說三遍)
(2) 管理方法的調用執行(AOP) ----- 面向切面編程
一、IoC/DI ----- 控制反轉/依賴注入(Inversion of Control / Dependency Injection)----- 橫向擴展增強、橫向擴展增強、橫向擴展增強(重要事情 說三遍)
1.描述:降低耦合度,創建對象
- 如果調用一個類中的方法,需要new對象時,手工new對象,再 點 調用。
- 在Spring 的IoC中,可以將代碼new對象交給Spring的配置文件完成,程序幫你new對象,不是手動new了。
2. IoC/DI 完成對象的解耦合
- 傳統的Javaweb三層,dao、service、controller,controller調用service層,service調用到層,有依賴。
- 所以,如果換一個接口的實現類時,就要修改很多源代碼,耦合度高,所以IoC/DI 就是完成對象的解耦合的。
3. 高內聚,低耦合
- 高內聚 是指 模塊內的功能聯繫緊密。
- 低耦合 是指 模塊間的聯繫,接口的複雜程度低。
二、AOP ----- 面向切面編程(Aspect Oriented Programming)
1. 描述:面向切面編程,擴展功能而不修改源代碼,而是橫向擴展,增強
2. AOP的底層實現
代理機制:
(1)JDK的動態代理:針對實現了接口的類產生代理。
(2)Cglib的動態代理:針對沒有實現接口的類產生代理。
===============================================================
3. AOP開發中的概念
1,JoinPoint(連接點):所謂連接點是指那些被攔截的點,而spring中這些點就是指方法,因爲spring只支持方法類型的連接點。
2,PointCut(切入點):所謂切入點就是指我們要對那些JoinPoint進行攔截的定義。
3,Advice(通知/增強):所謂通知/增強,就是指攔截到JoinPoint後需要完成的事情。他分爲前置通知/增強,後置通知/增強,異常通知/增強,最終通知/增強,環繞
通知/增強(切面要完成的功能);
4,Introduction(引介):引介是一種特殊的Advice,在不修改代碼的前提下,引介可以在運行期爲類動態的添加一些方法或Field。
5,Target(目標):代理對象的目標對象(要增強的類)
6,Weaving(織入):把Advice應用到Target的過程
7,Proxy(代理):一個類被AOP注入增強後,就產生了一個結果代理類
8,Aspect(切面):是PointCut和Advice(Introduction)的結合