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