IOC
IOC(Inversion Of Controll,控制反轉)是一種設計思想,將原本在程序中手動創建對象的控制權,交由給Spring框架來管理。IOC容器是Spring用來實現IOC的載體,IOC容器實際上就是一個Map(key, value),Map中存放的是各種對象。
這樣可以很大程度上簡化應用的開發,把應用從復雜的依賴關系中解放出來。IOC容器就像是一個工廠,當需要創建一個對象,只需要配置好配置文件/注解即可,不用考慮對象是如何被創建出來的,大大增加了項目的可維護性且降低了開發難度。
AOP
AOP(Aspect-Oriented Programming,面向切面編程)能夠將那些與業務無關,卻為業務模塊所共同調用的邏輯或責任(例如事務處理、日志管理、權限控制等)封裝起來,便于減少系統的重復代碼,降低模塊間的耦合度,并有利于未來的可擴展性和可維護性。使用AOP之后我們可以把一些通用功能抽象出來,在需要用到的地方直接使用即可,這樣可以大大簡化代碼量,提高了系統的擴展性。
Spring AOP是基于動態代理的,如果要代理的對象實現了某個接口,那么Spring AOP就會使用JDK動態代理去創建代理對象;而對于沒有實現接口的對象,就無法使用JDK動態代理,轉而使用CGlib動態代理生成一個被代理對象的子類來作為代理。