之前在学习spring框架的时候接触到面向切面编程(AOP),aop就是一种典型的动态代理。但是一直对java的动态代理没有一个全面的认识和学习,通过学习,记录一下自己对java的动态代理的理解。
1.什么是动态代理
简单来说,代理就是对一个对象生成他的代理对象,来实现对这个被代理对象的一些操作,比如消息的预处理,消息的过滤,消息事后处理等等。代理对象和被代理对象是实现相同的接口,对被代理对象的操作实际上是对代理对象进行相应的操作,而代理对象进行处理的时候是调用被代理对象的方法。
2.如何实现动态代理
1》创建被代理对象的接口和实现类
2》创建invocationHandler接口的实现类,实现invocate方法,其中invocate方法执行被代理对象的所有方法,以及需要添加的额外功能的方法
3》通过proxy类创建代理对象,其中2》中的类作为它的参数
4》实现代理