java怎么把方法的参数值动态赋值到该方法的注解上

图片说明
java怎么把方法的参数值赋值到该方法的注解上

http://blog.csdn.net/shaobo7705601/article/details/77838496

注解式日志,我按你的想法写了个实现,你看下,希望给个采纳

看了下楼上有个叫tangcai的那个代码,着实费劲,杀鸡焉用牛刀啊,有个很巧妙的方法了解一下?

    /**
     * 设置注解中的字段值
     *
     * @param annotation 要修改的注解实例
     * @param fieldName  要修改的注解字段名
     * @param value      要设置的值
     */
    public static void setAnnotationValue(Annotation annotation, String fieldName, Object value) throws NoSuchFieldException, IllegalAccessException {
        InvocationHandler handler = Proxy.getInvocationHandler(annotation);
        Field hField = handler.getClass().getDeclaredField("memberValues");
        hField.setAccessible(true);
        Map memberValues = (Map) hField.get(handler);
        memberValues.put(fieldName, value);
    }

几行代码就搞定的事情,没必要那么麻烦

不知道能不能做到,没试过,顶一下

不知道能不能做到,没试过,顶一下

我感觉不太现实啊!因为第一步从mapping这里出发就需要先知道要发给谁,可是你要是想让里面的value的值随着传来的数据变化而变化说真的不现实,因为这个进程不论怎么走肯定mapping先
,而且你的info是多变的,你要对应多少个不同的页面?这本身就有点不现实

可以,但是你方法体内部需要写调用该log注解的方法。

搞了两个多小时,,,这是测试案例(给个采纳呗)

链接: https://pan.baidu.com/s/1dEJsyRZ 密码: wcpi

长见识了 弄出来了可以分享一下

【追加】早上做的那个有个BUG,,更新了,,如下

链接: https://pan.baidu.com/s/1eRSdQ6I 密码: jq57

【原理】

【1】利用JVM动态加载机制,,我动态生成一个新的class,,和原来一样(仅动态修改注解内容)
【2】然后把你需要注入的内容,通过反射动态注入到注解中,生成一个新的class(官方提供的反射不是很给力,在此使用【javassist】)
【3】有了新生成了一个需要的class,,就好办了,,该干嘛干嘛,,无论是Spring配置,还是代码中classForName,,都不是问题。

图片说明

本人亲测,截图如上,,,有问题可追问,,代码知识Demo并未做优化(意思到了)