1
我知道方法參數很容易捕捉,它只是使用@ Advice.AllArguments。從建議的方法中獲取返回數據是否也很容易?我的目標不是修改方法,只是「拍攝出現的內容和出現的內容」並將其寫入文件。返回類型主要是來自javax的響應,但有時是基元。如何使用Byte Buddy和@Advice獲取返回數據?
public class MyAdviser {
@Advice.OnMethodEnter
public static void onEnter(@Advice.This Object obj, @Advice.Origin String method,
@Advice.AllArguments Object[] args) throws IOException {
FileWriter fw = new FileWriter("AgentData.txt", true);
BufferedWriter bw = new BufferedWriter(fw);
PrintWriter out = new PrintWriter(bw);
out.println(method);
out.println("Arguments : " + Arrays.deepToString(args));
out.println("---------------------------------------------");
out.close();
final Logger LOG = LoggerFactory.getLogger(obj.getClass());
LOG.info("Method name : " + method + " Object : " + obj + " " + obj.getClass());
LOG.info("Arguments : " + Arrays.deepToString(args));
}
@Advice.OnMethodExit
public static void onExit(@Advice.Origin String method) {
}
}