Spring中的cglib动态代理
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring中的cglib动态代理相关的知识,希望对你有一定的参考价值。
Spring中的cglib动态代理
cglib:Code Generation library,
基于ASM(java字节码操作码)的高性能代码生成包
被许多AOP框架使用
区别于JDK动态代理,cglib不需要实现接口。
下面使用cglib动态代理的方法实现增强
步骤一:创建一个接口UserService
public interface UserService { public void delect(); }
步骤二:创建一个UserService接口的实现类UserServiceImpl
public class UserServiceImpl implements UserService{ public void delect() { System.out.println("CglibProxy"); } }
步骤三:创建测试类(主要在测试类中实现主要代码)
public class ServiceTest { public static void main(String[] args) { final UserService service=new UserServiceImpl(); Enhancer en=new Enhancer(); en.setSuperclass(service.getClass()); en.setCallback(new org.springframework.cglib.proxy.MethodInterceptor() { public Object intercept(Object arg0, Method method, Object[] arg2, MethodProxy arg3) throws Throwable { System.out.println("==before=="); method.invoke(service, arg2); System.out.println("==after=="); return null; } }); UserService proxy=(UserService)en.create(); proxy.delect(); } }
运行结果如下所示:
简单的cglib动态代理就介绍到这里了,希望对您有帮助!
以上是关于Spring中的cglib动态代理的主要内容,如果未能解决你的问题,请参考以下文章
Spring Boot 中的 AOP,到底是 JDK 动态代理还是 Cglib 动态代理?
转载Spring AOP详解 JDK动态代理CGLib动态代理
Spring AOP中的JDK和CGLib动态代理哪个效率更高?