如何将 class 与内部注释匹配?
How to match a class with annotation inside?
我有一个名为 Metric
的注释
@Target({ElementType.FIELD, ElementType.METHOD})
public @interface Metric {
String name() default "";
}
我想在某些带有 @Metric
注释的方法时编织一些逻辑,例如:
public class MethodWithMetricDemo{
@Metric
public void targetMethod(){
// do some thing
}
}
但是如何匹配new AgentBuilder.Default().type(xxxxxxxxxxxxxxxx)
中的classMethodWithMetricDemo
呢?
您需要根据方法注释来匹配您的类型。由于方法实际上是继承的,因此您需要 hasSuperType(declaresMethod(isAnnotatedWith(...)))
遍历整个 class 层次结构。这是可能的,但相当昂贵。如果您选择使用这样的匹配器,您可能应该将匹配限制在给定的命名空间。
我有一个名为 Metric
@Target({ElementType.FIELD, ElementType.METHOD})
public @interface Metric {
String name() default "";
}
我想在某些带有 @Metric
注释的方法时编织一些逻辑,例如:
public class MethodWithMetricDemo{
@Metric
public void targetMethod(){
// do some thing
}
}
但是如何匹配new AgentBuilder.Default().type(xxxxxxxxxxxxxxxx)
中的classMethodWithMetricDemo
呢?
您需要根据方法注释来匹配您的类型。由于方法实际上是继承的,因此您需要 hasSuperType(declaresMethod(isAnnotatedWith(...)))
遍历整个 class 层次结构。这是可能的,但相当昂贵。如果您选择使用这样的匹配器,您可能应该将匹配限制在给定的命名空间。