Profile
GitHub

什么是aop

面向函数

func progm

可以看到 这是一连串的方法调用 这种方式的问题是:当程序变得复杂的时候,可能造成逻辑链的混乱

面向对象

obj progm

将函数集合抽象成不同的实体(对象),这样可以使得程序的逻辑更加清晰,易于维护

问题

不是所有的任务都可以被抽象成对象

obj progm

比如上面的每个对象都有需要打印日志, 会产生很多重复

增加log类

obj progm4

问题

  1. 造成很多不明确的类关系
  2. logger只是通用方法,没必要成为所有类的一个依赖
  3. 增加代码量
  4. 无法统一修改

AOP设计思路

解决一些通用问题:

  1. log
  2. 事务
  3. 鉴权

aop

Aspects(切面)

一个特殊的类,用于定义切面

Configuration(配置)

配置切面的调用方式,如:哪些类调用哪些切面,通常利用依赖注入实现

出现的位置

aop

可以出现在请求方法的前面,也可以出现在请求方法的后面