首页 > 编程语言 >JDK proxy 和cglib 源码解读

JDK proxy 和cglib 源码解读

时间:2024-04-08 22:23:30浏览次数:23  
标签:return ICalculator 源码 proxy cglib Integer public result

Hello World

1 JDK Proxy 案例

创建接口

package com.gientech.proxy.jdk;

public interface ICalculator {
    public Integer add(Integer i,Integer j);
    public Integer sub(Integer i,Integer j);
    public Integer mul(Integer i,Integer j);
    public Integer div(Integer i,Integer j);
}

创建实现类

package com.gientech.proxy.jdk;

public class MyCalculator implements ICalculator{
    @Override
    public Integer add(Integer i, Integer j) {
        return i+j;
    }

    @Override
    public Integer sub(Integer i, Integer j) {
        return i-j;
    }

    @Override
    public Integer mul(Integer i, Integer j) {
        return i*j;
    }

    @Override
    public Integer div(Integer i, Integer j) {
        return i/j;
    }
}

创建proxy

package com.gientech.proxy.jdk;

import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;

public class CalculatorProxy {
    public static ICalculator getProxy(final ICalculator calculator){
        ClassLoader loader = calculator.getClass().getClassLoader();
        Class<?>[] interfaces = calculator.getClass().getInterfaces();
        InvocationHandler handler = new InvocationHandler() {
            @Override
            public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
                Object result = null;
                try {
                    result = method.invoke(calculator, args);
                }catch (Exception e){
                    System.out.println(e);
                }finally {

                }
                return result;

            }
        };
        Object proxy = Proxy.newProxyInstance(loader, interfaces, handler);
        return (ICalculator) proxy;

    }
}

创建测试类

package com.gientech.proxy.jdk;


public class JDKProxyTest {
    public static void main(String[] args) {
        System.getProperties().put("sun.misc.", "true");
        ICalculator proxy = CalculatorProxy.getProxy(new MyCalculator());
        Integer result = proxy.add(1,1);
        System.out.println("result  ----  " + result);
        System.out.println(proxy.getClass());
    }
}

运行结果如下:
jdk proxy案例

标签:return,ICalculator,源码,proxy,cglib,Integer,public,result
From: https://www.cnblogs.com/zgcy123456/p/18122780

相关文章

  • 基于SSE长连接的智能客服问答系统技术方案及完整项目源码
    如果有帮助到您还请动动手帮忙点赞,关注,评论转发,感谢啦!......
  • 【附源码】JAVA计算机毕业设计校园技术交流与信息分享系统(源码+mysql+文档)
    本系统(程序+源码)带文档lw万字以上  文末可领取本课题的JAVA源码参考系统程序文件列表系统的选题背景和意义选题背景:在信息技术迅猛发展的当今时代,校园作为知识传播和技术创新的重要场所,急需一个高效的技术交流与信息分享系统来促进学术资源的整合和优化。随着互联网技......
  • 【附源码】JAVA计算机毕业设计校园二手交易(源码+mysql+文档)
    本系统(程序+源码)带文档lw万字以上  文末可领取本课题的JAVA源码参考系统程序文件列表系统的选题背景和意义选题背景:随着科技的不断进步和智能手机的普及,移动应用已成为人们生活不可或缺的一部分。特别是在校园内,学生们对于便捷的服务需求日益增长。在这样的背景下,校园......
  • 校园台球厅人员与设备管理系统的设计与实现|SpringBoot+ Mysql+Java+ B/S结构(可运行
    本项目包含可运行源码+数据库+LW,文末可获取本项目的所有资料。推荐阅读300套最新项目持续更新中.....最新ssm+java项目文档+视频演示+可运行源码分享最新jsp+java项目文档+视频演示+可运行源码分享最新SpringBoot项目文档+视频演示+可运行源码分享2024年56套包含java,ssm......
  • openGauss数据库源码学习-指标采集、预测与异常检测
    opengauss源码解析指标采集、预测与异常检测代码位置:/gausskernel/dbmind/tools/anomaly_detection各模组在整体结构上的组合在摩天轮论坛上官方解析文章已经叙述的相对完整详尽。该报告对应为具体模块内部的实现。Agent模块代码位置:~/agentAgent模块负责数据库指标数据......
  • 开源数据库OpenGauss的SQL解析源码分析
    开源数据库OpenGauss的SQL解析源码分析OpenGauss数据库体系概述openGauss是关系型数据库,采用客户端/服务器,单进程多线程架构;支持单机和一主多备部署方式,同时支持备机可读、双机高可用等特性。从代码结构体系结构的角度来说,oepnGauss的第一个组成部分是通信管理。openGa......
  • java计算机毕业设计书店展销小程序【附源码+远程部署+程序+mysql】
    本系统(程序+源码)带文档lw万字以上  文末可领取本课题的JAVA源码参考系统程序文件列表系统的选题背景和意义选题背景:在数字化时代,实体书店面临着前所未有的挑战。随着电子书和在线购书的普及,传统书店的销售模式受到了巨大冲击。为了适应这一变化,许多书店开始探索新的营销......
  • java计算机毕业设计校园图书商城小程序【附源码+远程部署+程序+mysql】
    本系统(程序+源码)带文档lw万字以上  文末可领取本课题的JAVA源码参考系统程序文件列表系统的选题背景和意义选题背景:在数字化时代的浪潮下,校园生活亦步入了智能化、便捷化的新篇章。传统的图书借阅和购买方式逐渐让位给更为高效的电子化服务。随着移动互联网技术的飞速发......
  • java计算机毕业设计驾校在线模拟考试小程序【附源码+远程部署+程序+mysql】
    本系统(程序+源码)带文档lw万字以上  文末可领取本课题的JAVA源码参考系统程序文件列表系统的选题背景和意义选题背景:在现代社会,驾驶汽车已成为人们生活中不可或缺的一部分。随着机动车数量的激增,道路安全问题也日益凸显,因此,掌握正确的驾驶知识和技能对于每位驾驶员来说都......
  • openGauss数据库源码解析——慢SQL检测
    openGauss数据库源码解析——慢SQL检测慢SQL检测的定义:基于历史SQL语句信息进行模型训练,并用训练好的模型进行SQL语句的预测,利用预测结果判断该SQL语句是否是潜在的慢SQL。当发现潜在的慢SQL后,开发者便可以进行针对性优化或者风险评估,以防业务上线后发生问题。慢......