1.静态代理:需要定义接口或者父类,目标对象与代理对象均实现同一接口或继承同一父类.
2.JDK动态代理:需要目标对象实现一个接口,通过动态反射的机制,生成代理对象,实现同一个接口
3.Cglib动态代理:不需要目标对象实现接口,通过动态反射的机制,生成代理对象作为目标对象的子类;拦截方法调用实现代理。
具体使用参考:http://www.cnblogs.com/cenyu/p/6289209.html
实例介绍:使用动态代理做缓存功能(https://www.zhihu.com/question/20794107)