如何使用bytebuddy在私有变量中设置注解@Value

问题描述

enter image description here

Class<?> metricTags = new ByteBuddy()
                .subclass(Object.class)
                .name("demo.metrics.MetricTags")
                .annotateType(AnnotationDescription.Builder.ofType(Component.class).build())
                .annotateType(AnnotationDescription.Builder.ofType(Data.class).build())
                .defineField("sourceApp",String.class,Visibility.PUBLIC)
                .annotateField(AnnotationDescription.Builder.ofType(Value.class).define("sourceApp","dsdw23").build())
                .defineField("sourceServiceNamespace",Visibility.PRIVATE)
                .defineField("sourceServiceName",Visibility.PRIVATE)
                .defineField("protocol",Visibility.PRIVATE).value("http")
                .defineField("appName",Visibility.PRIVATE)
                .make()
                .load(AgentMain.class.getClassLoader(),ClassLoadingStrategy.Default.WRAPPER)
                .getLoaded();

报告错误: 引起:java.lang.IllegalArgumentException:接口 lombok.Value 没有定义名为 sourceApp 的属性

解决方法

错误表明 Value 注释没有定义 thst name 的属性。您只能定义由注解类型声明的属性。