我對IOC和AOP的理解
spring中最重要的兩大核心概念就是IOC和AOP了,這也是面試中框架部分的必問點了
IOC
首先是IOC,到底什么是IOC呢?IOC(Inversion Of Control)叫做控制反轉。它主要還是一種設計思想,它可以將原本手動創建實例的過程交給 spring 來處理。目的就是簡化開發。因此,IOC還提供了IOC容器來存放這些實例。
IOC的主要實現就是DI依賴注入,Spring幫助了我們生產對象、管理對象、管理對象與對象之間的依賴關系。降低了代碼的耦合度、方便開發。
其中依賴注入也有幾種方式
1、通過構造函數創建
2、通過set方法創建
3、用p命名空間
4、使用注解的方式:@Autowired/@Resource
AOP
AOP(Aspect Oriented Programming)稱為面向切面編程。
AOP是一種編程思想,它可以將那些與業務無關,卻為業務模塊所共同調用的邏輯(例如事務處理、日志管理、權限控制等)封裝起來,減少系統的重復代碼,降低了模塊之間的耦合度,具有可擴展性和可維護性
AOP的實現原理是動態代理,分別有兩種:JDK動態代理和CGLIB動態代理
現在實現AOP的方式主要有兩種,一個是Spring AOP,另一個是 AspectJ AOP,其中Spring AOP已經集成了AspectJ,兩者的區別:AspectJ功能更加強大性能更好,但SpringAOP更簡單,