【SpringAOP】和【SpringMVC】
代理模式
- 静态代理
- 动态代理
代码步骤:
1、接口 2、真实角色 3、代理决角色 4、客户端访问代理角色
下图可以简单理解AOP底层的设计原理,即正常的程序上线后为左侧的纵向结构,但是当程序需要进行更新变动的时候,原则上去不能改动源码的,于是就诞生了AOP切面开发的思想,从外部对代码进行维护 而不用改动源码。
动态代理
– 动态代理和静态代理角色一样
– 动态代理的代理类 动态生成
– 分为两大类:基于接口的动态代理(JDK动态代理) 基于类(cglib) java字节码实现(javassist)
需要了解两个类: Proxy 和InvocationHandler
关于动态代理的底层需要知道的是 proxy这个类 是用来的生成代理类的 InvocationHandler这个类 是用来处理代理实例并返回结果的。 换句话就是 p 来生成一个类 invo 来执行这个 代理 所拥有的方法。