前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >aop实现对方法参数的获取

aop实现对方法参数的获取

作者头像
用户4235284
发布2022-12-03 13:00:02
4890
发布2022-12-03 13:00:02
举报
文章被收录于专栏:后端学习之道后端学习之道

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

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

代码:

MyParam

代码语言:javascript
复制
/**
 * 描述:注解
 *
 * @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

代码语言:javascript
复制
/**
 * 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 &amp;&amp; paramNames != null) {
            String params = "";
            for (int i = 0; i < args.length; i++) {
                params += "  " + paramNames[i] + ": " + args[i];
                System.out.println("params = " + params);
            }
        }

    }
}

使用:

代码语言:javascript
复制
@MyParam("flag")
public void testAop(String flag , String tag) {
    log.info("===========================>测试方法执行了");
}
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2022-07-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档