1.自定义注解FlowTaskPersonRecord
package com.taihang.flow.business.annotation;
import java.lang.annotation.*;
/**
* @author wangtw
* @date 2022/1/19 9:59
* @description 自定义注解
*/
@Inherited
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface FlowTaskPersonRecord {
/**
* 类对象
*/
Class group();
/**
* 属性值
*/
String[] prop();
}
2.定义切面
package com.taihang.flow.business.aspect;
import com.taihang.flow.business.annotation.FlowTaskPersonRecord;
import lombok.extern.slf4j.Slf4j;
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.Signature;
import org.aspectj.lang.annotation.After;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Pointcut;
import org.aspectj.lang.reflect.MethodSignature;
import org.springframework.stereotype.Component;
import java.lang.reflect.Method;
/**
* @author wangtw
* @date 2022/1/19 10:33
* @description 切面类
*/
@Aspect
@Component
@Slf4j
public class FlowTaskPersonRecordAspect {
@Pointcut("@annotation(com.taihang.flow.business.annotation.FlowTaskPersonRecord)")
public void pointcutAnnotation() {}
/**
* 后置通知
*/
@After(value = "pointcutAnnotation()")
public void methodAfter(JoinPoint joinPoint) {
//获取自定义注解属性值
Signature signature = joinPoint.getSignature();
MethodSignature methodSignature = (MethodSignature) signature;
Method method = methodSignature.getMethod();
FlowTaskPersonRecord TaskPersonAnnotation = method.getAnnotation(FlowTaskPersonRecord.class);
for (String s : TaskPersonAnnotation.prop()) {
System.out.println(s);
}
System.out.println(TaskPersonAnnotation.group());
//获取方法参数
for (Object arg : joinPoint.getArgs()) {
System.out.println(arg);
}
}
}
版权声明:本文为qq_39464523原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。