第九篇:Java之动态代理 Proxy和cglib

本文详细介绍了Java中的动态代理,包括JDK的Proxy和CGLib两种实现方式。Proxy需要被代理类实现接口,通过反射调用方法,效率较低但实现简单。CGLib则通过生成子类实现代理,运行效率高但生成过程复杂。总结了两者的特点和应用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Spring框架是Java程序员熟知的框架。Spring有两大特性,IOC和AOP。AOP就是我们熟悉的切面编程,和我们今天说的动态代理关系密切。

Java中动态代理有两种方式:Proxy和cglib

1、Proxy

Proxy要求被代理的类必须要继承接口才能实现代理,实现Proxy需要四步
1、定义接口

interface PersonInterface{
   
    public String print(String name);
}

2、定义被代理的类

class Person implements PersonInterface{
   

    public String print(String name) {
   
        System.out.println("my name is "+  name);
        return name;
    }
}

3、定义代理类

class MyInvokeHandler implements InvocationHandler{
   
    //o就是被代理的对象
    Object o;

    public MyInvokeHandler(Object o){
   
        this.o = o;
    }

    public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
   
        //执行方法前的业务处理
        System.out.println("invoke begin");
       	//执行被代理类的方法,利用反射
        Object res = method.invoke(o
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值