bytebuddy字节码增强关于type匹配疑问

sjtu_chenchen 2020-11-12 09:08:10
public class MyAgent {

public static void premain(String agentArgs, Instrumentation inst) {
System.out.println("this is an perform monitor agent.");

AgentBuilder.Transformer transformer = new AgentBuilder.Transformer() {
@Override
public DynamicType.Builder<?> transform(DynamicType.Builder<?> builder,
TypeDescription typeDescription,
ClassLoader classLoader) {
return builder
.method(ElementMatchers.<MethodDescription>any()) // 拦截任意方法
.intercept(MethodDelegation.to(TimeInterceptor.class)); // 委托
}
};

AgentBuilder.Listener listener = new AgentBuilder.Listener() {
@Override
public void onTransformation(TypeDescription typeDescription, ClassLoader classLoader, JavaModule module, DynamicType dynamicType) {}

@Override
public void onIgnored(TypeDescription typeDescription, ClassLoader classLoader, JavaModule module) { }

@Override
public void onError(String typeName, ClassLoader classLoader, JavaModule module, Throwable throwable) { }

@Override
public void onComplete(String typeName, ClassLoader classLoader, JavaModule module) { }
};

new AgentBuilder
.Default()
.type(ElementMatchers.nameStartsWith("com.example.demo")) // 指定需要拦截的类
.transform(transformer)
.with(listener)
.installOn(inst);
}
}



咨询下,上面代码是能增强的,但如果type不写完整包名,比如.type(ElementMatchers.nameStartsWith("com")) 为啥无法增强?
...全文
50 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

67,512

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧