Я пытаюсь настроить агент ByteBuddy для моего загрузочного проекта Spring, чтобы попробовать базовый c пример.
- Временной перехватчик
- Перехватчик входа и выхода из метода
TimingInterceptor
public class TimingInterceptor {
@RuntimeType
public static Object intercept(@Origin Method method, @SuperCall Callable<?> callable) {
long start = System.currentTimeMillis();
try {
return callable.call();
} catch (Exception e) {
e.printStackTrace();
} finally {
System.out.println(method + " took " + (System.currentTimeMillis() - start));
}
return null;
}
}
A gnet Основной класс
public static void premain(String arguments, Instrumentation instrumentation) {
System.out.println("====================================== Loading Agent ==============>>>>> ");
new AgentBuilder.Default().type(ElementMatchers.nameStartsWith("com.test.weather.service"))
.transform((builder, type, classLoader, module) -> builder.method(ElementMatchers.any())
.intercept(MethodDelegation.to(TimingInterceptor.class)))
.installOn(instrumentation);
}
У меня есть тестовая служба погоды с пакетом,
com.test.weather.service.WeatherController. java
Есть много подпакетов и разных классов.
Я хочу войти время, затрачиваемое для каждого метода с использованием перехватчика, а также для входа в систему при входе и выходе из метода.
Я запускаю свой проект весенней загрузки с агентом,
java - javaagent: bytebuddy-agent.jar ....
Я вижу отпечаток из класса premain. Но не удается увидеть журналы TimingInterceptor. Похоже, этот перехватчик не вызывается. Что-то не так?
=================================== == Загрузка агента ============== >>>>>