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")) 為啥無法增強?
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/212859.html
標籤:Java EE
上一篇:快速解決Mac無法顯示matplotlib中文問題(anaconda3) 小白也能看懂!!
下一篇:python海龜繪圖-畫國旗
