Spring框架 (14) —— 使用CGLIB 第三方代理、代理小结

本文介绍了Spring框架中如何使用CGLIB第三方代理。CGLIB是在JVM层面为无接口类创建子类,通过重写方法进行增强。文中包含案例代码、配置文件和测试代码,展示了CGLIB代理的使用和总结。CGLIB适用于类非final且方法非final、非static、非private的情况。最后,文章提到了直接使用代理可能导致的配置繁琐问题。
摘要由CSDN通过智能技术生成

使用CGLIB 第三方代理

CGLIB(Code Generation Library)是一个开源项目

CGLIB和JDK动态代理一样都是动态代理,但是CGLIB代理没有接口可以进行代理

CGLIB代理没有接口的类,在JVM动态的为这个代理创建一个子类,子类重写父类方法,并且调用父类方法,在父类方法执行之前,之后,异常,最终做增强

Spring默认已经集成CGLIB代理,直接可以使用即可,不用拷贝任何jar包

在这里插入图片描述

案例代码

在我们的UserServiceImpl的实现类中,使用CGLIB的动态代理,进行方法的增强,增强事物的功能

CGLIB代理类

public class CglibProxyHandler {
   
	//被代理的对象
	private Object target;
	//事务管理器
	private TransactionManagerHandler txManager; 
	/**
	 * 返回一个代理对象,代理对象就做了方法的增强,(事物管理,日志控制,权限管理等等)
	 * @return
	 */
	public <T> T getProxyObject(Class<T> clz) {
   
		
		//使用CGLIB代理,CGLIB代理 可以没有接口,直接使用类代理
		
		//创建Enhancer CGLIB代理对象
		Enhancer enhancer = new Enhancer();
		//设置类加载器
		enhancer.setClassLoader(this.getClass().getClassLoader());
		//设置被代理对象字节码
		enhancer.setSuperclass(target.getClass())
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值