一、面向切面 Spring AOP
1. 常用概念
面向切面:把應用中與業務邏輯無關的功能分離出來,而這些無關的功能被稱爲橫切關注點
橫切關注點(cross-cutting concerns):可以看成是影響應用多處的功能
通知(advice):通知定義了切面是什麼以及何時使用
連接點(Joinpoint):切面需要作用的地方
切點(Pointcut):切點定義了切面作用在何處,是連接點所在的一個範圍
切面(Aspect):橫切關注點所形成的特殊的類,通知和切點共同定義了切面的全部內容,“是什麼,在何時何處使用”
2. AOP 配置
3. 示例
3.1 改進:
如果想讓定義的切點被其它切面所引用,可以把 <aop:point-cut> 寫在 <aop:config> 元素的作用域裏
3.2 聲明環繞通知:
環繞通知對應的方法中,需要傳入 ProceedingJoinPoint 參數,通過調用 proceed() 方法來執行被環繞的方法,在 proceed() 方法的前面,後面分別定義要執行的邏輯
3.3 爲通知傳遞參數
3.4 通過切面引入新功能
type-matching:指定被通知的 bean;implement-interface:這些 bean 需要實現的接口;default-impl:定義實現此接口的方法。前面的 AOP 是爲 bean 中的方法添加新的功能,而這裏是爲 bean 添加新的方法/功能
4. 切面的註解
... ...
二、AspectJ