IoC和AOP
一、IoC
-
什么是IoC:控制反轉(Inversion of Control),又稱為依賴注入(Dependency Injection),把創建對象的控制權交出去,從主動創建對象變為被動接受對象。具體的說就是,在傳統的程序設計中,如果在web層要調用service層的方法,就必須在web層主動創建service層實現類對象,但是在spring中,創建對象的工作不再由調用者主動完成,而是把創建對象的控制權交給spring的bean工廠, 調用者只負責接收這個對象。
-
IoC的作用:實現解耦,更准確的說是實現了編譯期解耦,還存在運行期解耦。實現運行期解耦可以引入配置文件對依賴對象的路徑進行配置。
二、AOP
- 什么是AOP:面向切面編程(Aspect-Oriented Programming),把指定的邏輯代碼動態的切入到指定的位置上的編程思想。例如,在項目中有200個方法需要進行事務管理,或者200個方法需要日志打印,如果傳統的方法,我們可能要在這200個方法上分別加入對應的邏輯代碼,而如果需要調整那就要再修改200次,過於繁瑣。而如果利用AOP的思想,那就只需要把這些相同的代碼剝離出來,放到同一個類中進行集中管理。在運行時由spring容器動態切入這些代碼。
- AOP的原理:通過動態代理的方式,在不影響原有功能的基礎上,對功能進行增強、控制
- 常見的名詞
- 切入點(PointCut):所有能夠進行增強的方法,所有的切入點都會得到通知,不同的切入點得到的通知不同(根據正則表達式實現)
- 通知(Advice):要給目標對象進行增強、控制的邏輯代碼
- 切面(Aspect):切入點和通知的結合/共有功能的實現/被增強了的切入點方法
