spring aop设计

野鹤闲人 / 2023-08-31 / 原文

AOP产生的背景:

想要为不同的对象引入一个公共行为,可能导致大量重复代码。如果使用aop,可能只需要关注如下红色框的业务逻辑(切面逻辑),就可以

什么是aop:有三个过程

找到横切点:确定程序在哪个位置进行横切

写横切逻辑:与aop无关,就是开发同学需要关注的业务代码

织入:将横切逻辑织入 横切点

 

横切点 分为 字段和方法。方法(构造方法,静态方法,对象方法)

 

定义一个横切点:

功能1是返回给用户当前的横切点;

  如果横切点作用在对象(对象方法,对象字段,构造函数),则需要返回AccessibleObject和当前对象,

  如果作用在类(静态方法),只需要返回accessibleObject

功能2是 是否需要在横切点控制多个横切逻辑的调用。可以框架支持,也可以由横切点控制。

  责任链模式的api设计。例如tomcat的Filter是 集合形式调用,netty的 handler组织是 链表形式调用

 

如果需要集合形式调用,则需要在横切点定义一个方法来链式调用。 JoinPoint 是集合形式调用

JoinPoint来确定横切点

public interface Joinpoint {

 Object proceed() throws Throwable;

 Object getThis();

 AccessibleObject getStaticPart();

}

  

 

 

 参考自一篇极好的文章  https://mp.weixin.qq.com/s/YplYY4nDIAyDyweuHskaaQ