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

devtools/2024/9/25 19:06:28/

文章目录


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) {// 创建一个 enhancerEnhancer enhancer = new Enhancer();//        需要指定创建出来的代理类的父类enhancer.setSuperclass(targetClass.getClass());//        增强enhancer.setCallback(new MethodInterceptor() {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();}
}

http://www.ppmy.cn/devtools/48513.html

相关文章

YOLOv9改进策略 | 损失函数篇 | 利用SlideLoss助力YOLOv9有效涨点(附代码 + 完整修改方式)

一、本文介绍 本文给大家带来的是分类损失 SlideLoss损失函数,我们之前看那的那些IoU都是边界框回归损失,和本文的修改内容并不冲突,所以大家可以知道损失函数分为两种一种是分类损失另一种是边界框回归损失,上一篇文章里面我们总…

【春秋云镜】Faculty Evaluation System未授权任意文件上传漏洞(CVE-2023-33440)

因为该靶场没有Write up,索性自己搞一下,方便别人,快乐自己! 漏洞概述: Sourcecodester Faculty Evaluation System v1.0 is vulnerable to arbitrary code execution via /eval/ajax.php?actionsave_user. 漏洞复现&#xff…

Web前端与REST API:深度解析与实战指南

Web前端与REST API:深度解析与实战指南 在Web开发领域,前端与后端之间的数据交互至关重要,而REST API作为连接两者的桥梁,扮演着不可或缺的角色。本文将从四个方面、五个方面、六个方面和七个方面,深入剖析Web前端与R…

2021年CSP-J-T3-网络连接(network)

2021年CSP-J-T3-网络连接(network) 题目: 示例2 输入 10 Server 192.168.1.1:80 Client 192.168.1.1:80 Client 192.168.1.1:8080 Server 192.168.1.1:80 Server 192.168.1.1:8080 Server 192.168.1.999:0 Client 192.168.1.1.8080 Client …

贪吃蛇双人模式设计(2)

敲上瘾-CSDN博客控制台程序设置_c语言控制程序窗口大小-CSDN博客贪吃蛇小游戏_贪吃蛇小游戏csdn-CSDN博客 一、功能实现: 玩家1使用↓ → ← ↑按键来操作蛇的方向,使用右Shift键加速,右Ctrl键减速玩家2使用W A S D按键来操作蛇的方向&am…

【代码随想录】【算法训练营】【第30天 1】 [322]重新安排行程 [51]N皇后

前言 思路及算法思维,指路 代码随想录。 题目来自 LeetCode。 day 30,周四,好难,会不了一点~ 题目详情 [322] 重新安排行程 题目描述 322 重新安排行程 解题思路 前提:…… 思路:回溯。 重点&…

Rust 实战丨通过实现 json! 掌握声明宏

在 Rust 编程语言中,宏是一种强大的工具,可以用于在编译时生成代码。json! 是一个在 Rust 中广泛使用的宏,它允许我们在 Rust 代码中方便地创建 JSON 数据。 声明宏(declarative macros)是 Rust 中的一种宏&#xff0…

web安全-前端层面

参考资料引荐 https://blog.csdn.net/hack0919/article/details/130929154 XSS 简介 跨站脚本攻击(Cross-Site Scripting, 简称XSS)当用户将恶意代码注入网页时,其他用户在浏览网页时就会受到影响攻击主要方向主要用于盗取cookie凭据,钓鱼攻击&#…