我是一个使用字节伙伴编写Java代理的程序,它工作得很好,我使用了很多@ Advice.OnMethodEnter批注将代码添加到现有类中。
我有以下担忧:
我正在向代理添加很多应用程序/第三方依赖, 这会增加代理jar的大小
我担心是否会遇到classversion等问题,如果 应用程序依赖项版本的更改。
您能否建议是否有一种方法可以避免将应用程序依赖项添加到字节伙伴Java代理中?看起来像在Javassist中,我可以使用eg将代码添加到方法中。
例如
final String reportCode = MetricsCollector.class.getName() +
".report(" +
"\"" + behavior.getLongName() + "\", " +
"System.nanoTime() - $_traceTimeStart" +
");";
答案 0 :(得分:1)
在这种情况下,您不应在代理中包含库代码。相反,您应该在提供的范围依赖项中针对库进行编译,然后使用AgentBuilder.Transformer.ForAdvice
类让Byte Buddy根据您的代码和在用户目录中找到的库代码应用建议运行时的类加载器。