在编写业务代码的时候,我们常常需要加入日志输出、统计数据、性能监控、权限过滤、安全检查等逻辑,这些逻辑不是垂直的业务逻辑,而是公共基础的设施。如果把它们混合写到业务代码中,就违反了单一指责和关注点分离原则,业务增多之后,会存在大量的重复代码。
要实现这些公共基础逻辑与业务逻辑的解耦,我们可以用面向切面的编程**。如果一个程序是一个管道系统,AOP 就是在管道上钻一些孔, 在每个孔中注入新的代码流。实现AOP的关键就是将切面的逻辑嵌入到主体的业务程序之中。
- 接入点(JointPoint。程序执行过程中特定的点,一般是方法调用
- 增强处理(Advice)。定义针对连接点所做的增强处理,定义了“是什么”(增强处理的内容)以及“何时”(前置、后置、返回、异常、环绕);
- 目标对象(Target)。被增强处理的对象