反射生成注解实例

  1. 注解无法根据class直接newInstance出一个实例
  2. 根据Class中的createAnnotationData方法,可以看出注解的生成在AnnotationParser.parseAnnotations()中完成
  3. 最终调用AnnotationParser.annotationForMap(注解类,注解属性)方法生成注解实例
  4. 只有注解属性包含的,才会生成方法和方法返回值
     private RocketMQMessageListener instanceRocketMQMessageListener(String tag) {
        //获取注解默认属性
        AnnotationType instance = AnnotationType.getInstance(RocketMQMessageListener.class);
        Map<String, Object> stringObjectMap = instance.memberDefaults();
        // 完善注解必填属性
        stringObjectMap.put("topic", "ZT-TOPIC");
        stringObjectMap.put("consumerGroup", "newProducer");
        stringObjectMap.put("selectorExpression", tag);
        //反射生成实例
        return (RocketMQMessageListener)   AnnotationParser.annotationForMap(RocketMQMessageListener.class, stringObjectMap);
    }
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容