如果我使用一系列java代理来为相同的类进行字节码增强。后者的输入会是前者的输出吗?例如,智能体A向方法M添加两个局部变量,智能体B的输入将包含方法M中相同的两个局部变量?
发布于 2021-03-08 13:19:08
可以,如果代理B的转换器在代理A的转换后被调用:
当有多个转换器时,通过链接
transform调用来组成转换。也就是说,一次调用transform返回的字节数组将成为下一次调用的输入(通过classfileBuffer参数)。
这里还指定了调用转换器的顺序:
转换按以下顺序应用:
不支持
对于重新转换,不调用不支持重新转换的转换器,而是重用前一个转换的结果。在所有其他情况下,将调用此方法。在这些分组中,转换器按照注册的顺序被调用。Java转换器由 Virtual Machine Interface中的ClassFileLoadHook事件提供。
https://stackoverflow.com/questions/66523309
复制相似问题