利用ionic做的網站夜夜草
前言
本篇介紹什么是spring AOP, AOP的優(yōu)點,使用場景,spring AOP的組成,簡單實現AOP 并 了解它的通知;如有錯誤,請在評論區(qū)指正,讓我們一起交流,共同進步!
文章目錄
- 前言
- 1. 什么是spring AOP?
- AOP優(yōu)點:
- spring AOP 使用場景
- 認識AOP的組成
- 2. 實現spring AOP - 認識各種通知
- 總結
本文開始
1. 什么是spring AOP?
AOP: 面向切面編程,也就是面向某一類編程,對某一類事情進行統(tǒng)一處理;
spring AOP: 是實現了AOP這種思想的一個框架;
AOP優(yōu)點:
- 減少重復代碼:對一類同樣的工作統(tǒng)一處理;
- 提高開發(fā)效率:同上;
spring AOP 使用場景
使用:統(tǒng)一用戶登錄判斷; 統(tǒng)一異常處理; 統(tǒng)一日志等等;
認識AOP的組成
- 切面- Aspect:AOP定義的是一個事件;例如:登錄操作的整個過程;- 某個具體功能實現的過程 - 一共類;
- 切點 - Pointcut:AOP定義的具體規(guī)則;例如:驗證登錄的 方法;- 實現功能的方法 - 類中的方法定義;
- 連接點 - Join Point:可能觸發(fā)切點的所有點;- 可能調用功能的某個方法的點;
- 通知 - Advice:AOP具體執(zhí)行的方法;例如:方法的具體實現;- 代碼具體實現 - 類中方法的具體實現;
① 前置通知 @Before
② 后置通知 @After
③ 環(huán)繞通知 @Around
④ 異常通知 @AfterThrowing
⑤ 返回通知 @AfterReturning
通知執(zhí)行的順序:環(huán)繞通知之前 > 前置通知 > 方法 > 方法返回后通知 > 后置通知 > 環(huán)繞通知之后
2. 實現spring AOP - 認識各種通知
2.1 在springboot項目中,原有依賴 + 添加spring AOP 依賴
2.2 實現過程 定義切面 + 定義切點 + 定義通知
- 定義切面 -> 定義類
@Aspect // 定義切面
@Component //隨框架啟動,注入到容器中
public class UserAspect {//定義切點 + 通知...
}
- 定義切點 -> 定義方法
//定義切點, 對UserController進行攔截@Pointcut("execution(* com.example.demo.controller.UserController.*(..))")public void pointcut() {}//空方法:方法名用于標識
切點表達式:識別該包下類下的任意方法,參數不限;
- 定義通知:切點的方法名,寫在通知參數中,用于識別是哪個切點的通知;(想了解具體的 百度 - AspectJ 語法)
//前置通知@Before("pointcut()")public void doBefore() {System.out.println("執(zhí)行前置通知!");}
//后置通知@After("pointcut()")public void doAfter() {System.out.println("執(zhí)行后置通知!");}
//后置返回后的通知@AfterReturning("pointcut()")public void doAfterReturn() {System.out.println("執(zhí)行返回后通知!");}//拋出異常后通知@AfterThrowing("pointcut()")public void doAfterThrow() {System.out.println("執(zhí)行拋異常后的通知!");}
//環(huán)繞通知//使用環(huán)繞通知:例如:統(tǒng)計時間,就可以使用環(huán)繞通知,將通知前 與 通知后 放在一起@Around("pointcut()") //ProceedingJoinPoint:獲取連接點;執(zhí)行 =》返回框架,執(zhí)行public Object doAround(ProceedingJoinPoint joinPoint) throws Throwable {System.out.println("執(zhí)行環(huán)繞通知之前!");Object result = joinPoint.proceed();System.out.println("執(zhí)行環(huán)繞通知之后");return result;}
總結
???各位讀友,本篇分享到內容如果對你有幫助給個👍贊鼓勵一下吧!!
感謝每一位一起走到這的伙伴,我們可以一起交流進步!!!一起加油吧!!!