动态代理
动态代理:
- 代理对象
- 目标对象
通过动态代理的类全都继承proxy类
为什么找代理对象?
InvocationHandler:代理对象实现功能的方式
Object[] args代表的就是参数列表
Object… args 长度可变的参数列表
作业:实现日志功能
AOP
AOP概述
OOP:面向对象编程 纵向继承机制 找到对象 调用对象方法
AOP:面向切面编程 横向抽取机制 把某些代码抽取出来 作用到
(AOP是对OOP的补充,两者间不是谁包含谁的关系)
切面(aspect):保存公共功能(横切关注点)的类
AOP的好处
每个事物逻辑位于一个位置,代码不分散,便于维护和升级
业务模块更简洁,只包含核心代码
AOP图解
AOP术语
横切关注点
从每个方法中抽取出来的同一类非核心业务
切面(Aspect)
封装横切关注点信息的类,每个关注点体现为一个通知方法
通知(Advice)
切面必须要完成的各个具体工作
通知(切面中的叫法)与横切关注点(抽取类中的叫法)不同地方不同的叫法
目标
被通知的对象
代理
向目标对象应用通知之后创建的代理对象
连接点
在Spring中启用AspectJ注解支持
Aspect是Java社区里最完整最流行的AOP框架
导入jar包
引入aop命名空间
Copy qualified Name获取方法所在包名、类名以及参数类型
com.atguigu.spring.aop.MathImpl.add(int, int)