spring aop设计
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
备注:公众号清汤袭人能找到我,那是随笔的地方