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动态代理

Spring AOP中的JDK和CGLib动态代理哪个效率更高?

Spring AOP中的JDK和CGLib动态代理哪个效率更高?

Spring AOP:CGLIB动态代理