参考这篇文章:
http://rejoy.iteye.com/blog/1627405
虽然jdk动态代理和cglib代理技术的实现原理不同,但是使用的时候却是很相似:
使用的时候可以简单的理解为:将目标对象转换为代理对象。中间转换的方法不同:jdk动态代理要实现InvocationHandler接口(调用处理器接口),而cglib需要实现MethodInterceptor(方法拦截器接口)。且都要在接口实现类中添加生成代理类的方法,jdk通过Proxy类来生成。cglib通过Enhancer来生成。
在spring中使用的时候,就不用自己手动在实现接口的方法里面添加生成代理对象的方法了,直接将生成代理对象需要的相关信息注入得到spring提供的工厂类中,由spring为我们生产厂代理对象,直接拿到来用就行了。