首页 > 其他分享 >SpringAOP-代理方式-Cglib动态代理

SpringAOP-代理方式-Cglib动态代理

时间:2024-06-08 22:30:42浏览次数:21  
标签:enhancer Cglib Object 代理 cglib SpringAOP import public itheima

文章目录


cglib动态代理
cglib是基于继承的方式实现的

是继承目标类从而产生代理类

springaop底层使用的就是cglib的动态代理

package com.itheima.cjlibproxy;

import net.sf.cglib.proxy.Callback;
import net.sf.cglib.proxy.Enhancer;
import net.sf.cglib.proxy.MethodInterceptor;
import net.sf.cglib.proxy.MethodProxy;

import java.lang.reflect.Method;

/**
 * @author healer
 * @Description CglibProxyUtils
 * @data 2024-06-08 15:21
 */
public class CglibProxyUtils {
    public static Object createProxy(Object targetClass) {
        // 创建一个 enhancer
        Enhancer enhancer = new Enhancer();


//        需要指定创建出来的代理类的父类
        enhancer.setSuperclass(targetClass.getClass());


//        增强
        enhancer.setCallback(new MethodInterceptor() {
            @Override
            public Object intercept(Object o, Method method, Object[] args, MethodProxy methodProxy) throws Throwable {
                long start = System.currentTimeMillis();
                Object result = method.invoke(targetClass, args);
                long end = System.currentTimeMillis();

                System.out.println("-------->方法耗时:" + (end - start) + "ms");
                return result;
            }

        });

//        创建代理对象
        return enhancer.create();
    }

}

package com.itheima.cjlibproxy;

import com.itheima.jdkProxy.JdkProxyUtil;
import com.itheima.service.DeptService;
import com.itheima.service.impl.DeptServiceImpl;

/**
 * @author healer
 * @Description CglibProxyDemo
 * @data 2024-06-08 15:29
 */
public class CglibProxyDemo {
    public static void main(String[] args) {
        DeptService deptService = new DeptServiceImpl();

        DeptService proxyDeptService = (DeptService) CglibProxyUtils.createProxy(deptService);
        proxyDeptService.update();

    }
}

标签:enhancer,Cglib,Object,代理,cglib,SpringAOP,import,public,itheima
From: https://blog.csdn.net/weixin_55639995/article/details/139547261

相关文章

  • 代理IP纯净度如何测试?
    在网络应用和数据采集等领域,代理IP被广泛使用,而代理IP的纯净度则直接影响其性能和可用性。代理IP的纯净度主要涉及到代理IP在网络传输过程中的稳定性、匿名性和安全性。今天就带大家一起了解代理IP纯净度对用户的重要性。第一,保护用户的隐私在网络世界中,用户的真实身份和位......
  • 公共代理IP和独享代理IP之间的区别?
    公共代理IP和独享代理IP在网络应用中扮演着不同的角色,它们之间的区别主要体现在使用方式、性能、安全性以及隐私保护等方面。以下是对这两种代理IP的详细对比和分析。第一点就是使用的方式以及成本上的不同,公共代理IP,顾名思义,是多个用户共同使用的代理IP。这种代理IP通常由大......
  • SpringBoot高手之路jdk动态代理
    文章目录JDK动态代理基于jdk的动态代理Aop底层就是基于动态代理实现的实现代码先写代理对象工具JDK动态代理基于jdk的动态代理业务需求通过动态代理技术,对service层的方法统计执行时间–创建代理对象Aop底层就是基于动态代理实现的jdk动态代理技术是基于接口......
  • 支付系统实战(微服务)-聚合支付系统代理商分账业务分析及报表设计
    1前言聚合支付系统数字化中台在不同的行业中都扮演着重要的角色,企业中拥有这样一套系统能够解决企业内部的收款方式和统一收款场景。特别是在当前业财一体化的大趋势下更占据了很重要的角色,聚合支付数字中台系统在跨境支付业务中也能占据了很重要的作用。技术,产品一起加......
  • 四层反向代理和七层反向代理
    1、概述代理也称网络代理,是一种特殊的网络服务,允许一个网络终端(一般为客户端)通过这个服务与另一个网络终端(一般为服务器)进行非直接的连接。一些网关、路由器等网络设备具备网络代理功能。一般认为代理服务有利于保障网络终端的隐私或安全,防止攻击。 2、四层网络代理......
  • Java 的动态代理是基于什么原理?
    Java的动态代理是基于以下原理实现的:代理模式:代理模式是一种设计模式,通过创建一个代理对象来控制对真实对象的访问。代理对象可以在调用真实对象之前或之后增加额外的逻辑,比如权限验证、记录日志等。代理模式的主要目的是在不修改原有代码的基础上,扩展对象的行为。动......
  • 抖音外卖区域代理需要多少钱?入局成本如何计算?
    随着抖音外卖的日益火爆和抖音外卖平台全国代理的退场,想要申请抖音外卖平台区域代理的人数不断上涨。但是,创业毕竟不是儿戏,每一个决定都需要经过权衡利弊。而就做抖音外卖区域代理这一项目而言,抖音外卖平台区域代理需要多少钱才能成功入局便是创业者们需要考虑的首要问题。而......
  • 新手如何正确使用代理IP,一篇文章学会,包含实战案例
    前言一、代理IP1.1什么是代理IP?1.2代理ip分类1.3代理IP的作用和优势二、更换代理IP的方法2.1重启路由器或光猫2.2用拨号vps重拨更换动态IP代理。2.3使用浏览器更换IP三、IPIDEA代理的优势四、提取代理IP4.1提取步骤4.2浏览器使用代理IP五、使用代理IP获......
  • IP代理池是什么?
    从事跨境行业的朋友们总会有一个疑问,为什么自己所合作的IP代理商的IP在使用的过程中账号会有莫名封禁的问题,会不会是自己在使用的过程中错误的操作违反了平台的规则,其实不然有可能会是IP代理池纯净度不高的问题,有可能自己在使用的IP代理池已经被污染或是其他人用过的已用标签的......
  • 动态代理学习记录
    目录1.代理模式2.静态代理3.动态代理3.1JDK动态代理1.代理模式Java动态代理与设计模式中的代理模式有关,什么是代理模式呢?代理模式:给某一个对象提供一个代理,并由代理对象来控制对真实对象的访问。代理模式是一种结构型设计模式。代理模式有什么用?作用:通过代理可......