什么是aop
面向函数
可以看到 这是一连串的方法调用 这种方式的问题是:当程序变得复杂的时候,可能造成逻辑链的混乱
面向对象
将函数集合抽象成不同的实体(对象),这样可以使得程序的逻辑更加清晰,易于维护
问题
不是所有的任务都可以被抽象成对象
比如上面的每个对象都有需要打印日志, 会产生很多重复
增加log类
问题
- 造成很多不明确的类关系
- logger只是通用方法,没必要成为所有类的一个依赖
- 增加代码量
- 无法统一修改
AOP设计思路
解决一些通用问题:
- log
- 事务
- 鉴权
Aspects(切面)
一个特殊的类,用于定义切面
Configuration(配置)
配置切面的调用方式,如:哪些类调用哪些切面,通常利用依赖注入
实现
出现的位置
可以出现在请求方法的前面,也可以出现在请求方法的后面