Java 动态代理理解及使用

本文介绍了Java动态代理的概念,通过JDK动态代理和CGLIB动态代理的方式进行了详细讲解,包括它们的实现原理和区别。JDK动态代理需要被代理类实现接口,而CGLIB则无需接口,直接代理类。
摘要由CSDN通过智能技术生成

前言

最近在复习一些java知识,想着将之前没有注意的知识记录下来。第一次写博客,如果有什么问题的话希望大家指出来,共同探讨。

正文

什么是动态代理

动态代理其实就是代理类是由动态生成的。如果需要被代理的类有很多的话,就不用去一个个写代理类,符合面向切面编程,aop就是由动态代理来实现的。

动态代理实现方法

JDK动态代理

JDK动态代理是由 java.lang.reflect 包下的 Proxy 类的 newProxyInstance 来实现的。

首先看下 newProxyInstance 的方法参数:

public static Object newProxyInstance(ClassLoader loader,Class<?>[] interfaces,
                                          InvocationHandler h)

第一个参数是一个类加载器,可以使用被代理类来获得这个参数;
第二个参数是一个Class类数组,其实就是被代理类的所有实现接口;
第三个参数是一个接口,需要我们实现这个接口类,并且代理方法都在这个接口类的 invoke 方法中来实现。

接下来看实现方法,首先我们先假设一个场景,我们需要出售手中的一台笔记本电脑,然后我们将电脑挂到闲鱼上去买,这是我们手中的电脑就是被代理的类,而闲鱼就是代理类,它可以做一些自己的操作。

实现代码:
1.被代理的类需要实现一个接口,接口代码如下:

TradingPlatform.java
//交易平台接口
public interface TradingPlatform {
   
    void productInfo();
}

2.被代理类:

PersonalTrading.java
//个人交易,实现交易平台这个接口
public class PersonalTrading implements TradingPlatform {
   
    public void productInfo() {
   
        System.out.println(
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值