springboot aop 自定義切面程式設計

2021-09-01 00:10:03 字數 1664 閱讀 2158

本文結合springboot,實現切面程式設計。

@before 前置通知:在某連線點(joinpoint)之前執行的通知, 但這個通知不能阻止連線點前的執行。

@after 後通知:當某連線點退出的時候執行的通知 (不論是正常返回還是異常退出)。

@afterreturning 返回後通知 :在某連線點正常完成後執行的通知, 不包括丟擲異常的情況。

@around 環繞通知 :包圍乙個連線點的通知,類似web中servlet ,規範中的filter的dofilter方法。可以在方法的呼叫前後完成   自定義的行為,也可以選擇不執行。

@afterthrowing 丟擲異常後通知:在方法丟擲異常退出時執行的通知。

1.  首先,pom檔案引入aop依賴

org.springframework.boot

spring-boot-starter-aop

2. 新建兩個類,乙個實現切面的處理類,乙個定義註解

首先是定義註解:

@documented

@retention(retentionpolicy.runtime)

@target(elementtype.method)

public @inte***ce testannotation

然後是:切面處理類

@order(2)

@aspect //定義乙個切面

@configuration

public class testaspect

//執行方法之前,進入切面

@before(value = "executeservice()")

public void dobeforeadvice(joinpoint joinpoint)

//在進去方法的同時,進入切面

@around("executeservice()")

public object doaroundadvice(proceedingjoinpoint pjp) throws throwable

//在執行完方法後,進入切面,並返回方法的結果值,returning定義的引數必須和object後的形參一致

@afterreturning(value = "executeservice()", returning = "result")

public void doafteradvice(joinpoint joinpoint, object result) throws throwable }}

具體方法 的註解已經放到**中,

gson 的pom依賴:

com.google.code.gson

gson

2.8.5

注意:

假如定義了乙個切面: 即乙個方法只被乙個aspect類攔截,aspect類內部的 advice 將按照以下的順序進行執行:

若同乙個方法被多個aspect類攔截,執行順序是不一定的。想要有一定的順序,可以在處理類中加入@order 註解;
執行順序如下:

springboot AOP實現自定義註解新增驗證

1 新增pom.xml org.springframework.boot spring boot starter aop 2 新增註解類 自定義註解 用於驗證呼叫許可權 retention retentionpolicy.runtime target elementtype.method publi...

SpringBoot AOP 自定義引數轉換

有時候會有一些常用入參轉換和出參轉換需求,比如資料庫存入的引數與頁面不同,在請求引數去資料庫查詢時需要作一層引數轉換,而返回給前端也需要作引數轉換,為了不將這種常用冗餘 重複寫入,希望自定義註解實現自動轉換。下面 僅供參考 author wh date 2020 10 28 14 15 descri...

SpringBoot AOP程式設計

aop org.springframework.boot groupid spring boot starter aop artifactid dependency spring 的aop預設是使用jdk spring aop預設是使用jdk動態 即基於介面的 可以通過proxy target cl...