一、代理模式
为什么学习代理模式?因为这就是springAOP的底层!【SpringAOP和SpringMVC】
1.静态代理
接口:
房东:什么都不管,只出租房子
代理:
代理的操作:一般会有一些附属操作,否则代理毫无意义。
优缺点
代码步骤:
加深理解:
在不改变原有代码的情况下,添加一下功能,可以使用代理。
2.动态代理
动态代理的底层都是反射
两个类InvocationHandler和Proxy
动态代理代理的是接口
Proxy:生成动态代理实例
InvocationHandler:调用处理程序并返回结果
模板公式:
- 生成代理类
- Client
动态代理的好处
二、AOP
使用Spring实现AOP
【重点】使用AOP织入,需要导入一个依赖包!
方式一:使用Spring API的接口
在之前增强
在之后增强:
Aspectj中的Execution表达式:
测试类:
动态代理代理的是接口
方式二:使用自定义来实现AOP
测试类同上:
注解实现AOP
测试类同上:
切入点:
signature:签名,就是这个执行了哪个方法。
隐藏的一个参数: