![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
字节码增强
文章平均质量分 70
DN金猿
大佬级别的小沙弥
展开
-
如何使用 Byte Buddy 从方法描述中获取 Java 方法参数的实际名称
受本文的启发,我设法截取了方法调用,判断了所有方法参数值,并返回了模拟响应.但是,我无法获得参数的实际名称(与源代码中一样).我只能得到像"arg0"这样的名字.我所做的最大努力是,在方法匹配器中,我可以访问方法的方法描述,并且我可以获得参数的参数描述.但是,它的getActualName()返回空字符串.我确实通过maven插件配置添加了javac-g:vars参数,以指示javac将参数名称放入.class文件.我还能做什么?转载 2023-09-06 17:19:56 · 211 阅读 · 0 评论 -
java - 如何使用 ByteBuddy 向现有实例添加字段?
因此,尽管 Byte Buddy 可以调整字节码,但即使在类加载后正确完成,这也不起作用。我需要从 Spring 应用程序将文档扔到 MongoDB 实例,我可以在其中利用其数据包中的 MongoTemplate。在初始阶段,出于测试目的,以这种方式处理文档,在收集和分析一些数据后,它们不会发送到数据库。字段作为MongoDB文档id,导致数据库中出现重复的id,从而防止重复实例。字段对于 Spring 是必需的,我需要以某种方式添加一个。但是,由于虚拟机限制,这不起作用,您也可以更改方法内容。转载 2023-09-06 17:16:04 · 221 阅读 · 0 评论 -
ByteBuddy - rebase already loaded class
【代码】ByteBuddy - rebase already loaded class。转载 2023-08-13 19:22:55 · 264 阅读 · 0 评论 -
java.lang.NoClassDefFoundError: net/bytebuddy/implementation/Implementation$Context$Factory
正如 Will 的博客中所述 - 3 个独立的 jar,一个包含代理,一个包含拦截器,一个包含 Main 类。为了能够将其作为可执行 jar 运行,我们需要添加。似乎跳过将该范围的依赖项复制到其目标文件夹。中包含以下执行复制的插件来实现的。我需要将它们的范围更改为。我正在尝试重新创建 Will 的。我在这里可能缺少什么?因为后者取决于前者。这样,不必要的依赖项(例如。)就不会被上述插件与。转载 2023-08-13 19:12:10 · 240 阅读 · 0 评论 -
在ByteBuddy中重建jvm期间拦截构造函数
它使用类名作为“component”id,所以我不想创建一个插入指令类型的子类来避免类名中不必要的后缀。我已经开发了执行我需要的仪器的管道,但它可以在两个地方使用。在这个模块中,我希望重用第一个模块中的代码,并在加载之前另外更改插入指令类型的名称。至于你的问题,链接解决方案可能是最好的主意。最后,问题是:如果我想使用rebase rename,我是否在概念上做错了什么。你是对的,你发现了一个我刚刚修复的bug。令牌是不同的,因为它们具有不同的接收器类型,并且未检测构造函数。这里有完整的工作示例。转载 2023-08-12 12:42:23 · 264 阅读 · 0 评论 -
字节码编程,Byte-buddy篇三《使用委托实现抽象类方法并注入自定义注解信息》
截至到本章节关于字节码框架Byte-buddy的大部分常用 API 的使用已经通过案例介绍比较全面了,接下来介绍关于如何去实现一个抽象类以及创建出相应注解(包括类的注解和方法的注解)的知识点。而注解的这部分内容在一些监控或者拦截处理的场景下还是比较常用的,所以在这章节我们会通过一个例子来创建出含有自定义注解的类和方法。如果你已经阅读了之前的系列文章,这部分学习的内容并不会有太多的陌生,主要是关于委托(MethodDelegation)方法的使用以及补充自定义注解。「那么」转载 2023-08-10 10:10:08 · 202 阅读 · 0 评论