1.代理模式
SpringAOP的底层就是代理模式! 【SpringMVC】和【SpringAOP】
代理模式的分类:
- 静态代理
- 动态代理
1.1静态代理
角色分析:
抽象角色:一般使用接口和抽象类解决
真实角色:被代理的角色
代理角色:代理真实角色,且会有一些附属操作
客户: 访问代理对象的人
代码步骤:
1.接口
2.真实角色
3.代理角色
4.客户端访问代理角色
代理模式的好处:
- 可以使真正角色的操作更加纯粹,不需要考虑一些公共工作
- 公共业务交给代理角色,实现了业务的分工
- 公共业务发生扩展的时候,方便集中管理
缺点:
一个真实角色就会产生一个代理角色,会降低开发的效率。
1.2AOP的实现机制(面向切面编程)
1.3 动态代理
动态代理和静态代理角色一样
动态代理的代理类是自动生成的,不是我们直接写好的
动态代理分为两大类:<1>基于接口的动态代理 <2>基于类的动态代理
- 基于接口–基于JDK动态代理
- 基于类:cglib
- java字节码:JAVAlist
- 需要了解两个类: Proxy InvocationHandle:调用处理程序
动态代理的好处:
一个动态代理的是一个接口,一般对应的是一类业务。
一个动态代理可以代理多个类,只要实现了一个接口。(静态代理必须一一创建)