From eb98cd286faffe868398418a4d5d01e707a6d4dd Mon Sep 17 00:00:00 2001 From: guide Date: Tue, 4 Oct 2022 15:34:14 +0800 Subject: [PATCH] =?UTF-8?q?[docx=20fix]Spring=20AOP=E4=B8=AD=E7=9A=84?= =?UTF-8?q?=E9=80=82=E9=85=8D=E5=99=A8=E6=A8=A1=E5=BC=8F=E6=8F=8F=E8=BF=B0?= =?UTF-8?q?=E9=94=99=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/distributed-system/rpc/rpc-intro.md | 2 +- .../framework/spring/spring-design-patterns-summary.md | 10 +++++++--- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/docs/distributed-system/rpc/rpc-intro.md b/docs/distributed-system/rpc/rpc-intro.md index 5e9e4d8a..4651c7c7 100644 --- a/docs/distributed-system/rpc/rpc-intro.md +++ b/docs/distributed-system/rpc/rpc-intro.md @@ -66,7 +66,7 @@ Dubbo 提供了从服务定义、服务发现、服务通信到流量管控等 ![](https://guide-blog-images.oss-cn-shenzhen.aliyuncs.com/github/javaguide/distributed-system/rpc/image-20220716111545343.png) -Dubbo 是由阿里开源,后来加入了 Apache 。正式由于 Dubbo 的出现,才使得越来越多的公司开始使用以及接受分布式架构。 +Dubbo 是由阿里开源,后来加入了 Apache 。正是由于 Dubbo 的出现,才使得越来越多的公司开始使用以及接受分布式架构。 Dubbo 算的是比较优秀的国产开源项目了,它的源码也是非常值得学习和阅读的! diff --git a/docs/system-design/framework/spring/spring-design-patterns-summary.md b/docs/system-design/framework/spring/spring-design-patterns-summary.md index f34514cd..460954e6 100644 --- a/docs/system-design/framework/spring/spring-design-patterns-summary.md +++ b/docs/system-design/framework/spring/spring-design-patterns-summary.md @@ -278,11 +278,15 @@ public class DemoPublisher { 适配器模式(Adapter Pattern) 将一个接口转换成客户希望的另一个接口,适配器模式使接口不兼容的那些类可以一起工作。 -### spring AOP中的适配器模式 +### Spring AOP中的适配器模式 -我们知道 Spring AOP 的实现是基于代理模式,但是 Spring AOP 的增强或通知(Advice)使用到了适配器模式,与之相关的接口是`AdvisorAdapter ` 。Advice 常用的类型有:`BeforeAdvice`(目标方法调用前,前置通知)、`AfterAdvice`(目标方法调用后,后置通知)、`AfterReturningAdvice`(目标方法执行结束后,return之前)等等。每个类型Advice(通知)都有对应的拦截器:`MethodBeforeAdviceInterceptor`、`AfterReturningAdviceAdapter`、`AfterReturningAdviceInterceptor`。Spring预定义的通知要通过对应的适配器,适配成 `MethodInterceptor`接口(方法拦截器)类型的对象(如:`MethodBeforeAdviceInterceptor` 负责适配 `MethodBeforeAdvice`)。 +我们知道 Spring AOP 的实现是基于代理模式,但是 Spring AOP 的增强或通知(Advice)使用到了适配器模式,与之相关的接口是`AdvisorAdapter ` 。 -### spring MVC中的适配器模式 +Advice 常用的类型有:`BeforeAdvice`(目标方法调用前,前置通知)、`AfterAdvice`(目标方法调用后,后置通知)、`AfterReturningAdvice`(目标方法执行结束后,return之前)等等。每个类型Advice(通知)都有对应的拦截器:`MethodBeforeAdviceInterceptor`、`AfterReturningAdviceInterceptor`、`ThrowsAdviceInterceptor` 等等。 + +Spring 预定义的通知要通过对应的适配器,适配成 `MethodInterceptor` 接口(方法拦截器)类型的对象(如:`MethodBeforeAdviceAdapter` 通过调用 `getInterceptor` 方法,将 `MethodBeforeAdvice` 适配成 `MethodBeforeAdviceInterceptor` )。 + +### Spring MVC中的适配器模式 在Spring MVC中,`DispatcherServlet` 根据请求信息调用 `HandlerMapping`,解析请求对应的 `Handler`。解析到对应的 `Handler`(也就是我们平常说的 `Controller` 控制器)后,开始由`HandlerAdapter` 适配器处理。`HandlerAdapter` 作为期望接口,具体的适配器实现类用于对目标类进行适配,`Controller` 作为需要适配的类。