侧边栏壁纸
  • 累计撰写 781 篇文章
  • 累计创建 1 个标签
  • 累计收到 1 条评论
标签搜索

CGLIB

Dettan
2021-07-10 / 0 评论 / 0 点赞 / 88 阅读 / 909 字
温馨提示:
本文最后更新于 2022-04-30,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。
<dependency>
    <groupId>cglib</groupId>
    <artifactId>cglib</artifactId>
    <version>2.2.2</version>
</dependency>
示例 : 切面
public class SampleClass {
    public void test(){
        System.out.println("hello world");
    }
public static void main(String[] args) {
    Enhancer enhancer = new Enhancer();
    enhancer.setSuperclass(SampleClass.class);
    enhancer.setCallback(new MethodInterceptor() {
        @Override
        public Object intercept(Object obj, Method method, Object[] args, MethodProxy proxy) throws Throwable {
            System.out.println(&quot;before method run...&quot;);
            Object result = proxy.invokeSuper(obj, args);
            System.out.println(&quot;after method run...&quot;);
            return result;
        }
    });
    SampleClass sample = (SampleClass) enhancer.create();
    sample.test();
}

}

public class SampleClass {
public String test(String input){
return "hello world";
}
}




因为是直接操作字节码, 所以字节码生成后就和虚拟机直接运行字节码没有CGLIB的事了, 所以性能好, 不想java 自带的Proxy , 每次调用都有性能损耗
0

评论区