Spring AOP 使用的動態代理。
所謂的動態代理就是說AOP框框不會去修改字節碼,而是在內存中臨時為方法生成一個AOP對象,這個AOP對象包含了目標對象的全部方法,並且在特定的切點做了增強處理,並回調對象的方法。
Spring AOP 中的動態代理主要有兩種方式,JDK動態代理和CGLIB動態代理。
JDK動態代理的核心是InvocationHandler接口和Proxy類。如果目標類沒有實現接口,那么Spring AOP會選擇使用CGLIB來動態代理目標類。
CGLIB(Code Generation Libray),是一個代碼生成的類庫,可以在運行時動態生成某個類的子類。注意,CGLIB是通過繼承的方式做的動態代理,因為如果某個類被標記為final,那么它是無法使用CGLIB做動態代理的。
AOP 在事務管理方面。Spring使用AOP來完成聲明式的事務管理有Annotation和xml兩種形式。開發中,方便代碼編寫,很多時候在Spring配置文件中配置事務管理器並開啟事務控制注解。在業務類或業務類方法中添加@Transactional實現事務控制。