То, что я пытаюсь сделать, это в основном сопоставить поле класса с аннотацией, и они перехватывают получатель и установщик поля.
public class Foo {
@Sensitive
private String Blah;
Вот код моего агента:
private static AgentBuilder createAgent() {
return new AgentBuilder
.Default()
.with(AgentBuilder.RedefinitionStrategy.RETRANSFORMATION)
.type(ElementMatchers.is(FieldTypeMatcher.class).and(ElementMatchers.isAnnotatedWith(Foo.class)))
.transform(((builder, typeDescription, classLoader, module) ->
builder
.method(method -> method.getActualName().contains(typeDescription.getActualName()))
.intercept(Advice.to(Interceptor.class))
));
}
Хотя я мог сопоставить имя поля с сигнатурой метода, но мне не повезло.