• 通过示例展示Byte Buddy 如何增强 log() 方法


    /**
     * subclass:对应 ByteBuddy.subclass() 方法。这种方式比较好理解,就是为目标类(即被增强的类)生成一个子类,在子类方法中插入动态代码。
     * 通过一个示例展示 Byte Buddy 如何增强 log() 方法
     */
    public class TestByteBuddy {
        public static void main(String[] args) throws IllegalAccessException, InstantiationException {
            // 创建ByteBuddy对象
            String str = new ByteBuddy()
                    // subclass增强方式
                    .subclass(AAA.class)
                    // 新类型的类名
                    .name("com.xxx.Type")
                    // 拦截其中的toString()方法
                    .method(ElementMatchers.named("log"))
                    // log()方法返回固定值
                    .intercept(FixedValue.value("Hello World!"))
                    .make()
                    // 加载新类型,默认WRAPPER策略
                    //WRAPPER 策略:创建一个新的 ClassLoader 来加载动态生成的类型。
                    .load(TestByteBuddy.class.getClassLoader())
                    .getLoaded()
                    // 通过 Java反射创建 com.xxx.Type实例
                    .newInstance()
                    // 调用 log()方法
                    .log();
            System.out.println(str);
        }
    }
    
    
    public class AAA {
        public String log(){
            System.out.println("测试ByteBuddy");
            return "返回ByteBuddy";
        }
    }
  • 相关阅读:
    换种方式思考问题
    win7 下的open live writer代码插件
    vue-todolist
    vue-新建项目出错情况分析
    vue新建项目
    AJAX(一、基本知识)
    2016年度工作总结
    常看常遇见之一——BS架构VS CS架构
    thinkjs——session
    关于Listener
  • 原文地址:https://www.cnblogs.com/wueryuan/p/14229733.html
Copyright © 2020-2023  润新知