aop实现对方法参数的获取

简介: aop实现对方法参数的获取

场景:      需要对入参的数据进行校验,添加相关逻辑或日志监控等

实现方式:  AOP自定义注解+反射

代码:

MyParam

/**
 * 描述:注解
 *
 * @author Administrator
 * @since 2022/7/11
 */
@Target(value = {ElementType.METHOD, ElementType.TYPE, ElementType.FIELD, ElementType.PARAMETER})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface MyParam {
    String value() default "";
}
复制代码

MyParamAsp

/**
 * desc: 具体逻辑 <br>
 * date: 2022/7/11
 *
 * @author Administrator
 */
@Slf4j
@Aspect
@Component
public class MyParamAsp {
    @Pointcut("@annotation(com.zyjournals.web.miniprogram.config.anno.MyParam)")
    public void controllerAspect() {
    }
    @Before("controllerAspect()")
    public void doBefore() {
        log.info("===========================>AOP Before");
    }
    /**
     * desc: aop after <br>
     * date: 2022/7/11
     *
     * @author Administrator
     */
    @After("controllerAspect()")
    public void doAfter(JoinPoint joinPoint) throws NoSuchMethodException {
        log.info("===========================>AOP After");
        MethodSignature signature = (MethodSignature) joinPoint.getSignature();
        Method method = signature.getMethod();
        // 请求的方法参数值
        Object[] args = joinPoint.getArgs();
        // 请求的方法参数名称
        LocalVariableTableParameterNameDiscoverer u = new LocalVariableTableParameterNameDiscoverer();
        String[] paramNames = u.getParameterNames(method);
        if (args != null && paramNames != null) {
            String params = "";
            for (int i = 0; i < args.length; i++) {
                params += "  " + paramNames[i] + ": " + args[i];
                System.out.println("params = " + params);
            }
        }
    }
}
复制代码

使用:

@MyParam("flag")
public void testAop(String flag , String tag) {
    log.info("===========================>测试方法执行了");
}


相关文章
|
1月前
|
存储 JSON Java
SpringBoot集成AOP实现每个接口请求参数和返回参数并记录每个接口请求时间
SpringBoot集成AOP实现每个接口请求参数和返回参数并记录每个接口请求时间
66 2
|
1月前
|
Java
Springboot 使用自定义注解结合AOP方式校验接口参数
Springboot 使用自定义注解结合AOP方式校验接口参数
Springboot 使用自定义注解结合AOP方式校验接口参数
|
1月前
|
前端开发 Java
干货文:SpringBoot 配置 AOP 打印请求参数和返回参数
干货文:SpringBoot 配置 AOP 打印请求参数和返回参数
106 1
|
1月前
|
Java
SpringBoot整合AOP整合aspectj实现面向切面编程实现参数接收和请求时间打印
SpringBoot整合AOP整合aspectj实现面向切面编程实现参数接收和请求时间打印
9 0
|
1月前
|
安全 前端开发 Java
Java反射详解,学以致用,实战案例(AOP修改参数、Mybatis拦截器实现自动填充)3
Java反射详解,学以致用,实战案例(AOP修改参数、Mybatis拦截器实现自动填充)
89 0
|
1月前
|
Java 数据库连接 API
Java反射详解,学以致用,实战案例(AOP修改参数、Mybatis拦截器实现自动填充)2
Java反射详解,学以致用,实战案例(AOP修改参数、Mybatis拦截器实现自动填充)
45 0
|
1月前
|
存储 Java 数据库连接
Java反射详解,学以致用,实战案例(AOP修改参数、Mybatis拦截器实现自动填充)1
Java反射详解,学以致用,实战案例(AOP修改参数、Mybatis拦截器实现自动填充)
54 0
|
6月前
|
缓存 Java Spring
Spring AOP如何为目标方法创建拦截器链?
Spring AOP如何为目标方法创建拦截器链?
67 0
|
12月前
|
Java
SpringBoot 自定义注解 + AOP实现参数效验,默认值赋值
SpringBoot 自定义注解 + AOP实现参数效验,默认值赋值
326 2
|
Java Maven Spring
如何通过自定义注解来实现 Spring AOP,以便更加灵活地控制方法的拦截和增强?
如何通过自定义注解来实现 Spring AOP,以便更加灵活地控制方法的拦截和增强?
73 0