zoukankan      html  css  js  c++  java
  • 通过示例展示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";
        }
    }
  • 相关阅读:
    使用freemarker生成word,步骤详解并奉上源代码
    汉诺塔问题
    java interview
    java 反射
    java 匿名内部类
    java 内部类(转)
    MYSQL和ORACLE的一些区别
    Hibernate总结(转)
    Hibernate的使用
    Arduino LM35温度检测
  • 原文地址:https://www.cnblogs.com/wueryuan/p/14229733.html
Copyright © 2011-2022 走看看