Spring AOP的原理
Spring會在用戶獲取對象時,生成目標對的代理對象,之后根據切入點規則,匹配用戶連接點,得到切入點,當切入點被調用時,不會直接去找目標對象,而是通過代理對象攔截之后交由切面類中的指定的通知執行來進行增強。
Spring自動為目標對象生成代理對象,默認情況下,如果目標對象實現過接口,則采用java的動態代理機制,如果目標對象沒有實現過接口,則默認采用cglib動態代理。開發者可以在spring中進行配置,要求無論目標對象是否實現過接口,都強制使用cglib動態代理。
AOP的注解方式實現
spring也支持注解方式實現AOP,相對於配置文件方式,注解配置更加的輕量級,配置、修改更加方便,是目前最流行的方式了呢~
1.開啟AOP的注解配置方式
2.將指定的類標志為一個切面
3.配置通知 制定切入點規則
**通過注解的配置 等價於配置文件的配置
4.如果一個切面中多個通知 重復使用同一個切入點表達式,則可以將該切入點表達式單獨定義,后續使用,注意,在當前切面中通過注解定義的切入點只在當前切面中起作用,其他切面看不到。
5.在后置通知的注解中,也可以額外配置一個returning屬性,來指定一個參數名接收目標方法執行后的返回值
6.在異常通知的注解中,也可以額外配置一個throwing屬性,來指定一個參數名接收目標方法拋出的異常對象