Bytebuddy javaagent拦截用* .Controller

时间:2018-02-22 15:59:22

标签: java spring-boot logging javaagents byte-buddy

正如标题所暗示的那样,我正在创建一个javaagent,其主要目的是为任何弹簧启动应用程序创建一个漂亮的记录器;现在。

我现在所做的通常是:

private static void install(String className, String methoName, Instrumentation instr) {
    new AgentBuilder.Default().disableClassFormatChanges()
    .with(AgentBuilder.RedefinitionStrategy.RETRANSFORMATION)
    .type(ElementMatchers.named(className))
    .transform((builder, typeDescription, classLoader, module) -> {
        return builder.visit(Advice.to(AdviceDispatcherServlet.class).on(ElementMatchers.named(methoName)));
    }).installOn(instr);
}

如果我知道班级的路径,那就非常有效,即" org.springframework.web.servlet.DispatcherServlet"和方法" doDispatch"。

现在我只希望将建议添加到使用" org.springframework.web.bind.annotation.RestController"注释的类型中。没有我的经纪人的春天依赖;怎么办呢?

我已经尝试了

..ElementMatchers.annotationType(ElementMatchers.named("org.springframework.web.bind.annotation.RestController");

哪个不起作用。

1 个答案:

答案 0 :(得分:0)

您可以使用:

<a class="nav-link active" href="#">
  <span class="far fa-file-alt"></span> Cargar Documentos
</a>

您当前正在匹配完整注释,而不是注释类型。