JDK动态代理和Cglib动态代理(包含代码和讲解)

本文介绍了JDK动态代理和Cglib动态代理的原理与使用。JDK动态代理适用于有接口的情况,通过InvocationHandler的invoke方法实现方法拦截。Cglib动态代理则适用于无接口场景,通过字节码技术动态生成子类实现。两者都是为了在不修改原有代码的基础上,增加额外功能或进行方法拦截。
摘要由CSDN通过智能技术生成

1.JDK动态代理

首先,我们需要明白的就是在jdk动态代理当中,需要明白的就是,为什么会有这样一个代理,那是因为当需要代理的方法越来越多的时候,这个时候就会增大麻烦量,于是就引出了JDK的动态代理。

代码

首先是书写对应的接口,以及你需要完成的任务对应的实现类
subject.interface

package com.example.qhb.Jdk;

public interface Subject {
   
    void request();
    void hell0();
}

RealSubject.class

package com.example.qhb.Jdk;

import jdk.internal.loader.AbstractClassLoaderValue;

public class RealSubect implements Subject {
   
    @Override
    public void request() {
   
        System.out.println("首先是发送对应的请求");
    }

    @Override
    public void hell0() {
   

        System.out.println("打一下招呼");
    }
}

接下来就是对应的书写代理类了,首先,我们需要明白的就是,在这里是需要使用到jdk的动态代理,而这个代理的好处就是可以一次性地将方法写入到放法invoke()中去,这个方法又是存在于接口InvocationHandler中的,所以在这里我们需要使用代理类来对这个接口进行实现:
JdkProxySubject.class

package com.example.qhb.Jdk;

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

public class JdkProxySubject implements InvocationHandler {
   

    //接下来就是引入需要执行定义的目标类
    private RealSubect realSubect;

    public JdkProxySubject(RealSubect realSubect) 
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值