故夫风起于青萍之末
2017-09-04 01:59
采纳率: 100%
浏览 25.0k
已采纳

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

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

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

9条回答 默认 最新

  • 伯乐_博 2017-09-04 08:26
    已采纳

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

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

    点赞 打赏 评论
  • 中岛嘉兰 2018-07-20 12:50

    看了下楼上有个叫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);
        }
    

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

    点赞 5 打赏 评论
  • show_code 2017-09-04 02:01

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

    点赞 打赏 评论
  • qq_33363288 2017-09-04 02:04

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

    点赞 打赏 评论
  • 我本狂儒 2017-09-04 02:12

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

    点赞 打赏 评论
  • 伯乐_博 2017-09-04 02:17

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

    点赞 打赏 评论
  • 鼠小 2017-09-04 04:23

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

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

    点赞 打赏 评论
  • 一直在爬坑 2017-09-04 08:24

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

    点赞 打赏 评论
  • 鼠小 2017-09-04 08:38

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

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

    【原理】

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

    图片说明

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

    点赞 打赏 评论

相关推荐 更多相似问题