SpringBoot AOP 自定義引數轉換

2021-10-25 10:57:18 字數 2288 閱讀 1769

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

下面**僅供參考

/**

* @author : wh

* @date : 2020/10/28 14:15

* @description: 引數轉換

*/@documented

@target

(elementtype.method)

@retention

(retentionpolicy.runtime)

public @inte***ce

typetansform

這裡是基於環繞通知,乙個簡單demo

在方法執行前攔截對入參轉換,在方法執行後攔截對返回結果作引數轉換,所以使用環繞通知

自己使用可在此demo上作相應的擴充套件

/**

* @author : wh

* @date : 2020/10/28 14:15

* @description:

*/@aspect

@component

@slf4j

public

class

typetansformaspect

@around

("fun()"

)public object doafter

(proceedingjoinpoint joinpoint)

throws exception

catch

(throwable throwable)

if(objects.

isnull

(result)

)// 是否分頁物件 pageinfovo 為自定義分頁物件

if(result instanceof

pageinfovo

)return result;

}/**

* 是否存在屬性

* @param fieldname 屬性名

* @param clazz 類

* @return boolean

* @author wh

* @date 2020/11/17

*/public

static

boolean

i***istfieldname

(string fieldname, class clazz)}

return flag;

}/**

* 入參轉換

* @param targets 入參屬性

* @param fieldannotation 註解屬性

* @return void

* @author wh

* @date 2020/11/17

*/private

void

rxtransfrom

(object[

] targets, string fieldannotation)

else

if(constant.otcname.

equalsignorecase

(ltype))}

}catch

(exception e)

}/**

* 返回值轉換

* @param object 目標物件

* @param resultannotation 註解屬性

* @return void

* @author wh

* @date 2020/11/17

*/private

void

transfromtorx

(object object, string resultannotation)

else

if(constant.otc.

equalsignorecase

(ltype))}

}catch

(exception e)

}}

在 serviceimpl 加上註解即可完成入參與返回結果的自動轉換

@override

@typetansform

(field =

"bigtype"

)public

boolean

updatecustomerlabel

springboot aop 自定義切面程式設計

本文結合springboot,實現切面程式設計。before 前置通知 在某連線點 joinpoint 之前執行的通知,但這個通知不能阻止連線點前的執行。after 後通知 當某連線點退出的時候執行的通知 不論是正常返回還是異常退出 afterreturning 返回後通知 在某連線點正常完成後執行...

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

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

SpringBoot AOP程式設計

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