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

硅谷探秘者 Md ASM,java基础 924 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基础 897 SampleClass类的非final的所有成员。如果,可以实现CallbackFilter接口,如下:importnet.sf.cglib.proxy
java基础 3073 初步探究cglib动态的原之前我们说了一下jdk动态的原http://www.jiajiajia.club/weblog/blog/artical/60本章说一下cglib动态,做
ASM,java基础 998   关于cglib的概念和原以及常用api,请参考:初步探究cglib动态的原:http://www.jiajiajia.club/blog/artical/yjw520
weblog 4206 前言 好久就开始关注cglib动态了,但是到今天才算是有点搞明白~cglib动态底层用到了asm等字节码操作框架。不懂的可以先百度百度asm是干啥的,在这里也提供一些文章,但是可能比较深入
java基础 2756 java静态示例packageclub.jiajiajia.test.staticproxy;publicinterfaceBuyHouse{voidbuyHosue();//买房子
算法基础 1239 房的例子来比喻正向A(客户端)想租C(服务端)的房子(A(客户端)知道C(服务端)有房子),但是A(客户端)并不认识C(服务端)租不到。B()认识C(服务端)能租这房子所以你找了B()帮忙
linux系统 1564 nginx上传文件报413(RequestEntityTooLarge)错误的解决案RequestEntityTooLarge:请求的实体太大,nginx时默认的大小是1M解决案:设置
linux系统 6216 案一:一般配置案二:访问域名时静态资源文件案一:一般配置  如果以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  7 2022-05  1 2022-08  3 2022-09  2 2022-10  2 2022-12  5 2023-01  3 2023-02  1 2023-03  4 2023-04  2 2023-06  3 2023-07  4 2023-08  1 2023-10  1 2024-02  1 2024-03  1 2024-04  1
标签
算法基础 linux 前端 c++ 数据结构 框架 数据库 计算机基础 储备知识 java基础 ASM 其他 深入理解java虚拟机 nginx git 消息中间件 搜索 maven redis docker dubbo vue 导入导出 软件使用 idea插件 协议 无聊的知识 jenkins springboot mqtt协议 keepalived minio mysql ensp 网络基础 xxl-job rabbitmq haproxy srs 音视频 webrtc javascript
目录
没有一个冬天不可逾越,没有一个春天不会来临。最慢的步伐不是跬步,而是徘徊,最快的脚步不是冲刺,而是坚持。