【发布时间】:2018-02-22 15:59:21
【问题描述】:
正如标题所示,我正在制作一个 javaagent,主要目的是为任何 Spring Boot 应用程序制作一个不错的记录器;暂时。
我现在做的通常是:
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");
这不起作用。
【问题讨论】:
标签: java spring-boot logging javaagents byte-buddy