cglib代理指定只代理某个方法

硅谷探秘者 ASM,java基础 107 0 0

cglib代理指定只代理某个方法

import net.sf.cglib.proxy.*;
import java.lang.reflect.Method;

class SampleClass{
    public void test(){
        System.out.println("test");
    }
    public void test2(){
        System.out.println("test2");
    }
}
public class test {
    public static void main(String[] args) {
        Enhancer enhancer = new Enhancer();
        enhancer.setSuperclass(SampleClass.class);
        CallbackHelper callbackHelper = new CallbackHelper(SampleClass.class, new Class[0]) {
            @Override
            protected Object getCallback(Method method) {
                // 只代理方法名是test的方法
                if(method.getName().equals("test")){
                    return new MethodInterceptor(){
                        @Override
                        public Object intercept(Object o, Method method, Object[] objects, MethodProxy methodProxy) throws Throwable {
                            System.out.print("代理---");
                            return methodProxy.invokeSuper(o, objects);
                        }
                    };
                }else{
                    return NoOp.INSTANCE;
                }
            }
        };
        enhancer.setCallbackFilter(callbackHelper);
        enhancer.setCallbacks(callbackHelper.getCallbacks());
        SampleClass proxy = (SampleClass) enhancer.create();
        proxy.test();
        proxy.test2();
    }
}

输出:

代理---test
test2
猜你喜欢
ASM,java基础 91 SampleClass类的非final的所有成员。如果,可以实现CallbackFilter接口,如下:importnet.sf.cglib.proxy
java基础 1632 初步探究cglib动态的原之前我们说了一下jdk动态的原http://www.jiajiajia.club/weblog/blog/artical/60本章说一下cglib动态,做
ASM,java基础 107   关于cglib的概念和原以及常用api,请参考:初步探究cglib动态的原:http://www.jiajiajia.club/blog/artical/yjw520
weblog 2380 前言 好久就开始关注cglib动态了,但是到今天才算是有点搞明白~cglib动态底层用到了asm等字节码操作框架。不懂的可以先百度百度asm是干啥的,在这里也提供一些文章,但是可能比较深入
java基础 1379 java静态示例packageclub.jiajiajia.test.staticproxy;publicinterfaceBuyHouse{voidbuyHosue();//买房子
算法基础 405 房的例子来比喻正向A(客户端)想租C(服务端)的房子(A(客户端)知道C(服务端)有房子),但是A(客户端)并不认识C(服务端)租不到。B()认识C(服务端)能租这房子所以你找了B()帮忙
linux系统 700 nginx上传文件报413(RequestEntityTooLarge)错误的解决案RequestEntityTooLarge:请求的实体太大,nginx时默认的大小是1M解决案:设置
linux系统 3619 案一:一般配置案二:访问域名时静态资源文件案一:一般配置  如果以html、htm、gif、jpg、jpeg、bmp、png、ico、txt、js、css结尾的资源,均由nginx处
归档
2018年11月  12 2018年12月  33 2019年01月  28 2019年02月  28 2019年03月  32 2019年04月  27 2019年05月  33 2019年06月  6 2019年07月  12 2019年08月  12 2019年09月  21 2019年10月  8 2019年11月  15 2019年12月  25 2020年01月  9 2020年02月  5 2020年03月  16 2020年04月  4 2020年06月  1 2020年07月  7 2020年08月  13 2020年09月  9 2020年10月  5 2020年12月  3 2021年01月  1 2021年02月  5 2021年03月  7 2021年04月  4 2021年05月  4 2021年06月  1 2021年07月  7 2021年08月  2 2021年09月  8 2021年10月  9 2021年11月  16 2021年12月  14 2022年01月  6
标签
算法基础 linux 前端 c++ 数据结构 框架 数据库 计算机基础 储备知识 java基础 ASM 其他 深入理解java虚拟机 nginx git 消息中间件 搜索 maven redis docker dubbo vue 导入导出 软件使用 idea插件 协议 无聊的知识 jenkins springboot mqtt协议
目录
祝愿神州十三飞行乘组平安归来