Spring AOP 結合自定義註解的使用

2022-09-11 16:51:27 字數 2202 閱讀 8534

1,宣告自定義註解,這裡的key()為要攔截的方法中的方法體對應的變數名,可以參考第3點.

2,建立乙個切面類,@annatation()中的comment 為方法引數體中的註解對應的變數名

3,在要攔截的方法上加入定義好的註解,其中#comment使用的是spel表示式.

spel表示式工具類:

package

club.ruanx.util;

import

org.springframework.expression.spel.standard.spelexpression;

import

org.springframework.expression.spel.standard.spelexpressionparser;

import

org.springframework.expression.spel.support.standardevaluationcontext;

import

org.springframework.util.stringutils;

/*** spel表示式工具類

* *

@author

阮勝 * @date 2018/12/20 20:36 */

public

class

spelutils , new object);

* 其中 #msg是變數,把對應的引數列表的值依次填充到各個變數中**

@param

expression 表示式

* @param

parameternames 引數名稱

* @param

args 引數值

* @return

解析後的表示式

*/public

static

string parseexpression(string expression, string parameternames, object args)

spelexpression spelexpression = new

spelexpressionparser().parseraw(expression);

standardevaluationcontext evaluationcontext = new

standardevaluationcontext();

for (int i = 0; i < parameternames.length; i++)

spelexpression.setevaluationcontext(evaluationcontext);

return spelexpression.getvalue(string.class

); }

}

切面工具類:

package

club.ruanx.util;

import

org.aspectj.lang.joinpoint;

import

org.aspectj.lang.reflect.methodsignature;

import

org.springframework.core.localvariabletableparameternamediscoverer;

import

j**a.lang.reflect.method;

/***

@author

阮勝 * @date 2018/12/20 20:30 */

public

class

aspectutils

/*** 根據方法獲取形參列表**

@param

method 方法

* @return

形參列表

*/public

static

string getmethodparamnames(method method)

}

SpringBoot 結合AOP使用自定義註解

最近使用springboot在做乙個需求的時候,使用到了aop 面向切面程式設計 spring的aop一直都是spring宣傳的一大特性,其實也沒多高大上,就是使用jdk或者aspectj做的動態 這個需求是做乙個審計日誌,使用aop是最最合適不過了,使用aop不用耦合在業務 裡,可擴充套件性好,但...

spring aop 自定義註解實現操作日誌記錄

1,spring配置檔案 2,日誌攔截類 public class logaspect catch throwable e finally return retval private void insertopertlog proceedingjoinpoint jp,stopwatch stopw...

validation 引數校驗 包括自定義註解

validation 引數校驗 jsr提供的校驗註解 null 被注釋的元素必須為 null notnull 被注釋的元素必須不為 null asserttrue 被注釋的元素必須為 true assertfalse 被注釋的元素必須為 false min value 被注釋的元素必須是乙個數字,其...