Агент ByteBuddy для загрузочного проекта Spring - PullRequest
0 голосов
/ 19 февраля 2020

Я пытаюсь настроить агент ByteBuddy для моего загрузочного проекта Spring, чтобы попробовать базовый c пример.

  1. Временной перехватчик
  2. Перехватчик входа и выхода из метода

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. Похоже, этот перехватчик не вызывается. Что-то не так?

=================================== == Загрузка агента ============== >>>>>

...