03 cglib动态代理
发布日期:2022-03-30 20:19:33 浏览次数:24 分类:博客文章

本文共 1553 字,大约阅读时间需要 5 分钟。

前面我们看过了使用jdk完成动态代理,但jdk完成动态代理必须定义接口。这一节我们将使用cglib完成动态代理,这种方式不用创建接口。

1、操作步骤

  • 在pom.xml中加入依赖
cglib
cglib
2.2.2
  • 创建一个UserService.java类
public class StudentService {    public void query(){        System.out.println("query");    }}
  • 创建cglibhandle
import org.springframework.cglib.proxy.Enhancer;import org.springframework.cglib.proxy.InvocationHandler;import java.lang.reflect.Method;public class MyCglibEnchancer {    public static Enhancer getEnhancer(final Object carService) {        Enhancer e=new Enhancer();        //设置增强器的类加载器        e.setClassLoader(carService.getClass().getClassLoader());        //设置代理对象父类类型        e.setSuperclass(carService.getClass());        //设置回调函数        e.setCallback(new InvocationHandler() {            @Override            public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {                System.out.println("开始事务。。。");                Object obj = method.invoke(carService, args);                System.out.println("结束事务。。。");                return obj;            }        });        return e;    }}
  • 创建测试类
public class TestCglibProxy{      public static void main(String[] args) {        //1创建目标对象        StudentService carService = new StudentService();        //2创建代理对象        //2.1创建增强器对象        Enhancer e = MyCglibEnchancer.getEnhancer(carService);        //2.5创建代理对象        StudentService proxy = (StudentService) e.create();        //3.执行代理对象业务        proxy.query();    }}

以上就是cglib完成动态代理的过程。

转载地址:https://www.cnblogs.com/alichengxuyuan/p/12554680.html 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:02 jdk动态代理
下一篇:04 注解方式完成aop

发表评论

最新留言

初次前来,多多关照!
[***.217.46.12]2024年03月27日 22时49分14秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章

mysql 怎样链接jdbc_jdbc怎么链接mysql数据库 2019-04-21
mysql学生课程表试题_Mysql练习之 学生表、课程表 、教师表、成绩表 50道练习题... 2019-04-21
java exec封装_Java 执行系统命令工具类(commons-exec) 2019-04-21
php sha512解密,PHP加密函数 sha256 sha512 sha256_file() sha512_file() 2019-04-21
php将文件夹打包zip文件,PHP把文件夹打包成ZIP文件 2019-04-21
mysql in 逗号分隔,使用MySQL IN()从逗号分隔的值中获取记录? 2019-04-21
php静态页面示例,php生成静态页面的简单示例_php实例 2019-04-21
迭代函数系统matlab实现,线性随机IFS迭代Matlab示例程序.doc 2019-04-21
w3wp ash oracle,[20200409]使用ash_wait_chains注意的一个细节.txt 2019-04-21
c语言程序设计教程谭浩强张基温,C语言程序设计教程(第2版) 2019-04-21
idea xml文件引入类提示_IDEA中导入多module的Maven项目后子项目不正常的情况 2019-04-21
太赫兹芯片是什么原理_什么是太赫兹技术?艾舒朗太赫兹理疗鞋——脑梗后遗症+便秘+久站腿疼腿肿案例... 2019-04-21
exfat默认配置大小_mac开发配置技巧 2019-04-21
三星k3梅林没有软件中心_10万出头买顶配,1.4T合资家轿起亚K3换新,还带换挡拨片... 2019-04-21
k8s边缘节点_边缘计算容器及K8S应用的三种场景及部署选项 2019-04-21
诸葛io的技术架构图_基于泳道技术生成“无数”个测试环境 2019-04-21
互相引用 spring_# 技术笔记:spring、springBoot源码解析 2019-04-21
华为发布岳云鹏手机_鸿蒙2.0正式发布:明年华为手机全面升级 2019-04-21
ifpc挖filecoin_Filecoin挖矿分析全套 不容错过的干货 2019-04-21
python扫雷 高级算法_Python玩转算法—扫雷 2019-04-21