JavaGuide
JavaGuide copied to clipboard
常用框架/Spring&SpringBoot/重要知识点/Spring中的设计模式#spring-aop中的适配器模式描述部分有问题
spring-aop中的适配器模式中如下图
通过查阅 org.springframework.aop.framework.adapter包下的 AdvisorAdapter 相关源码发现,
xxx通知对应的xxxAdapter适配器 通过调用 getInterceptor 将通知适配成对应的Interceptor,
所以 aop适配器模式这里描述有误,应该是通过xxxAdapter将xxx通知适配成对应的MethodInterceptor
所以正确描述应该是这样:
我们知道 Spring AOP 的实现是基于代理模式,但是 Spring AOP 的增强或通知(Advice)使用到了适配器模式,与之相关的接口是AdvisorAdapter 。Advice 常用的类型有:BeforeAdvice(目标方法调用前,前置通知)、AfterAdvice(目标方法调用后,后置通知)、AfterReturningAdvice(目标方法执行结束后,return之前)等等。每个类型Advice(通知)都有对应的拦截器:MethodBeforeAdviceInterceptor、AfterReturningAdviceInterceptor、ThrowsAdviceInterceptor等。Spring 预定义的通知要通过对应的适配器,适配成 MethodInterceptor 接口(方法拦截器)类型的对象(如:MethodBeforeAdviceAdapter 通过调用 getInterceptor 方法,将 MethodBeforeAdvice 适配成 MethodBeforeAdviceInterceptor )。