cglib获取不到接口注解

背景

  • 我想实现的是获取interface类上的注解,代理使用的是cglib
  • 这是我的注解
@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public  @interface HbServerName {

    /**
     *  服务名称
     * **/
    String value() default "";

    /***
     * 地址前缀
     * */
    String serverUrlPrefix() default "";


}

  • 我获取的是一个接口上的HbServerName 注解。但是返回是null

解决方案

  • 我对比了以下几种方式
...省略...
// target是我构造器传进来的
  HbServerName annotation = target.getAnnotation(HbServerName.class);
  HbServerName annotation2 = obje.getClass().getAnnotation(HbServerName.class);
   HbServerName annotation1 = Class.forName(target.getName()).getAnnotation(HbServerName.class);
   HbServerName hbServerName = AnnotationUtils.findAnnotation(obje.getClass(), HbServerName.class);

...省略...
  • 运行结果如下图所示。
    在这里插入图片描述
  • 可以看到这2种办法是可以的。
   HbServerName annotation1 = Class.forName(target.getName()).getAnnotation(HbServerName.class);
   HbServerName hbServerName = AnnotationUtils.findAnnotation(obje.getClass(), HbServerName.class);
  • Class.forName重新得到class或者使用Spring的AnnotationUtils#findAnnotation

参考

posted on   愤怒的苹果ext  阅读(138)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 25岁的心里话

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示