1
Мне нужно получить параметры из пользовательской аннотации и передать их в перехватчик. Например,Извлечение параметров из пользовательских аннотаций с использованием byte-buddy
@MyAnnotation(id="Some", enumpar=SomeEnum.SOMECONSTANT)
public String sayHello() {
}
Я хотел бы использовать значения идентификатора и enumpar в следующем перехватчик
@RuntimeType
public Object intercept(@SuperCall Callable<?> zuper) throws Exception {
// interception stuff
return zuper.call();
}
Так как я могу расширить базовый класс, включив в него параметры аннотаций? У меня есть следующие прямо сейчас
Class<?> enhancedClass = new ByteBuddy()
.with(new NamingStrategy.SuffixingRandom("Proxy"))
.subclass(clazz)
.method(isAnnotatedWith(MyAnnotation.class))
.intercept(MethodDelegation.to(new ListenerMetricsInterceptor()))
.make()
.load(Thread.currentThread().getContextClassLoader(), ClassLoadingStrategy.Default.WRAPPER)
.getLoaded();
Большое спасибо. Раньше я делал то же самое, но использовал неправильный класс метода из «net.bytebuddy.jar.asm.commons.Method», но понял, что должен использовать «java.lang.reflect.Method». Еще раз спасибо. – devin