优化MethodMatcher
parent
2ce5a5225a
commit
2645dc4976
|
@ -1,35 +1,24 @@
|
|||
## MethodMatcher
|
||||
|
||||
- [MethodMatcher](#MethodMatcher)
|
||||
- [一、基本信息](#一基本信息)
|
||||
- [二、知识储备](#二知识储备)
|
||||
- [三、基本描述](#三基本描述)
|
||||
- [四、主要功能](#四主要功能)
|
||||
- [五、接口源码](#五接口源码)
|
||||
- [六、主要实现](#六主要实现)
|
||||
- [七、最佳实践](#七最佳实践)
|
||||
- [八、与其他组件的关系](#八与其他组件的关系)
|
||||
- [九、常见问题](#九常见问题)
|
||||
- [MethodMatcher](#methodmatcher)
|
||||
- [一、基本信息](#一基本信息)
|
||||
- [二、基本描述](#二基本描述)
|
||||
- [三、主要功能](#三主要功能)
|
||||
- [四、接口源码](#四接口源码)
|
||||
- [五、主要实现](#五主要实现)
|
||||
- [六、最佳实践](#六最佳实践)
|
||||
- [七、源码分析](#七源码分析)
|
||||
- [八、常见问题](#八常见问题)
|
||||
|
||||
### 一、基本信息
|
||||
|
||||
✒️ **作者** - Lex 📝 **博客** - [掘金](https://juejin.cn/user/4251135018533068/posts) 📚 **源码地址** - [github](https://github.com/xuchengsheng/spring-reading)
|
||||
|
||||
### 二、知识储备
|
||||
|
||||
1. **切点表达式语言**
|
||||
|
||||
+ 了解切点表达式语言,如Spring AOP中常用的AspectJ切点表达式语言。掌握如何使用切点表达式来描述切点,以及如何使用通配符、逻辑运算符等进行切点匹配。
|
||||
|
||||
2. **设计模式**
|
||||
|
||||
+ 了解设计模式,特别是代理模式和策略模式对于理解Spring AOP中的代理对象和不同类型的MethodMatcher实现很有帮助。
|
||||
|
||||
### 三、基本描述
|
||||
### 二、基本描述
|
||||
|
||||
`MethodMatcher` 接口是Spring AOP中的一个关键接口,用于判断一个给定的方法是否匹配指定的切点表达式。它定义了方法匹配的规则和逻辑,我们可以通过实现这个接口来自定义方法匹配的行为,从而实现针对特定方法的切面逻辑的拦截和执行。
|
||||
|
||||
### 四、主要功能
|
||||
### 三、主要功能
|
||||
|
||||
1. **方法匹配**
|
||||
|
||||
|
@ -51,7 +40,7 @@
|
|||
|
||||
+ `MethodMatcher` 接口的设计应该具有良好的扩展性,我们可以根据实际需求自定义方法匹配的规则和逻辑,以满足不同的业务场景和需求。
|
||||
|
||||
### 五、接口源码
|
||||
### 四、接口源码
|
||||
|
||||
`MethodMatcher` 接口用于检查目标方法是否符合通知的条件。它支持静态匹配和动态匹配两种方式,静态匹配在编译时确定,而动态匹配在运行时根据方法参数和先前通知的执行情况进行判断。
|
||||
|
||||
|
@ -123,7 +112,7 @@ public interface MethodMatcher {
|
|||
}
|
||||
```
|
||||
|
||||
### 六、主要实现
|
||||
### 五、主要实现
|
||||
|
||||
1. **AnnotationMethodMatcher**
|
||||
|
||||
|
@ -145,7 +134,7 @@ public interface MethodMatcher {
|
|||
|
||||
+ 这个类使用 AspectJ 表达式语言来创建切点,它允许我们使用更加灵活和强大的语法来定义切点。AspectJ 表达式支持更多的特性,包括访问方法参数、异常类型等。
|
||||
|
||||
### 七、最佳实践
|
||||
### 六、最佳实践
|
||||
|
||||
使用不同类型的方法匹配器来检查特定方法是否满足不同的条件。其中,使用 AnnotationMethodMatcher 来检查方法是否具有特定的注解;使用 AspectJExpressionPointcut 基于 AspectJ 表达式来匹配方法;使用 NameMatchMethodPointcut 基于方法名称来匹配方法;使用 JdkRegexpMethodPointcut 基于正则表达式来匹配方法。
|
||||
|
||||
|
@ -175,25 +164,11 @@ public class MethodMatcherDemo {
|
|||
}
|
||||
```
|
||||
|
||||
### 八、与其他组件的关系
|
||||
### 七、源码分析
|
||||
|
||||
1. **Pointcut**
|
||||
暂无
|
||||
|
||||
+ `MethodMatcher` 接口是 `Pointcut` 接口的一部分,用于确定哪些方法应该被拦截和应用额外逻辑的地方。`MethodMatcher` 接口的实现类通常被用来定义切点的匹配条件。
|
||||
|
||||
2. **Advisor**
|
||||
|
||||
+ `MethodMatcher` 接口常常用于创建切面通知器,它决定了切面通知器应该在哪些方法上生效。切面通知器通常会关联一个切点,而切点又会使用 `MethodMatcher` 来确定哪些方法被匹配。
|
||||
|
||||
3. **Advice**
|
||||
|
||||
+ 通知是在切点上执行的附加逻辑。`MethodMatcher` 可以用来限制通知应该应用在哪些方法上。这意味着只有当方法匹配 `MethodMatcher` 的条件时,通知才会被触发。
|
||||
|
||||
4. **ProxyFactory**
|
||||
|
||||
+ 当我们使用 Spring AOP 创建代理时,`MethodMatcher` 通常用于确定哪些方法需要被代理,并且哪些方法应该被排除在代理之外。
|
||||
|
||||
### 九、常见问题
|
||||
### 八、常见问题
|
||||
|
||||
1. **如何编写自定义的 MethodMatcher 实现?**
|
||||
|
||||
|
|
Loading…
Reference in New Issue