cglib

CGLIB通过动态生成目标类的子类,并利用字节码操作技术运行时插入代理逻辑,实现了灵活且高效的动态代理机制。这种机制在不依赖接口的情况下也能为任何类添加额外行为,特别适用于需要对现有类进行功能增强的场景。

测试服务

public class DataConverterComponent {
    public void convert() {
        System.out.println("DataConverterComponent convert");
    }
}

cglib代理类,需要实现MethodInterceptor接口

public class DataConverterComponentInterceptor implements MethodInterceptor {
    @Override
    public Object intercept(Object o, Method method, Object[] args, MethodProxy methodProxy) throws Throwable {
        System.out.println("DataConverterComponentInterceptor 前");
        Object result = methodProxy.invokeSuper(o, args);
        System.out.println("DataConverterComponentInterceptor 后");
        return result;
    }
}

测试main

public class DataConverterComponentMain {
    public static void main(String[] args) {
        Enhancer enhancer = new Enhancer();
        enhancer.setSuperclass(DataConverterComponent.class);
        enhancer.setCallback(new DataConverterComponentInterceptor());
        DataConverterComponent dataConverterComponent = (DataConverterComponent) enhancer.create();
        dataConverterComponent.convert();
    }
}

 

posted @ 2024-04-29 11:54  使用D  阅读(4)  评论(0编辑  收藏  举报