diff --git a/spring-aop/spring-aop-classFilter/README.md b/spring-aop/spring-aop-classFilter/README.md index 747a0f4..c81ec0e 100644 --- a/spring-aop/spring-aop-classFilter/README.md +++ b/spring-aop/spring-aop-classFilter/README.md @@ -6,8 +6,9 @@ - [三、主要功能](#三主要功能) - [四、接口源码](#四接口源码) - [五、主要实现](#五主要实现) - - [六、最佳实践](#六最佳实践) - - [七、常见问题](#七常见问题) + - [六、类关系图](#六类关系图) + - [七、最佳实践](#七最佳实践) + - [八、常见问题](#八常见问题) ### 一、基本信息 @@ -87,7 +88,30 @@ public interface ClassFilter { + 主要用于基于 AspectJ 表达式匹配目标类。 -### 六、最佳实践 +### 六、类关系图 + +~~~mermaid +classDiagram +direction BT +class AnnotationClassFilter +class AspectJExpressionPointcut +class ClassFilter { +<> + +} +class RootClassFilter +class TypePatternClassFilter + +AnnotationClassFilter ..> ClassFilter +AspectJExpressionPointcut ..> ClassFilter +RootClassFilter ..> ClassFilter +TypePatternClassFilter ..> ClassFilter + +~~~ + + + +### 七、最佳实践 使用不同类型的类过滤器在 Spring AOP 中的使用方式。我们创建了四种不同的类过滤器实例,并测试它们是否匹配了特定的类。通过打印输出结果,展示了每个类过滤器的匹配情况,从而说明了它们在过滤目标类方面的作用。 @@ -123,7 +147,7 @@ RootClassFilter 是否匹配 MySubService 的根类:true AspectJExpressionPointcut 是否匹配 MyService 类:true ``` -### 七、常见问题 +### 八、常见问题 1. **匹配准确性** diff --git a/spring-aop/spring-aop-methodMatcher/README.md b/spring-aop/spring-aop-methodMatcher/README.md index 443a33b..3a0746d 100644 --- a/spring-aop/spring-aop-methodMatcher/README.md +++ b/spring-aop/spring-aop-methodMatcher/README.md @@ -6,10 +6,11 @@ - [三、主要功能](#三主要功能) - [四、接口源码](#四接口源码) - [五、主要实现](#五主要实现) - - [六、最佳实践](#六最佳实践) - - [七、源码分析](#七源码分析) + - [六、类关系图](#六类关系图) + - [七、最佳实践](#七最佳实践) - [八、常见问题](#八常见问题) + ### 一、基本信息 ✒️ **作者** - Lex 📝 **博客** - [掘金](https://juejin.cn/user/4251135018533068/posts) 📚 **源码地址** - [github](https://github.com/xuchengsheng/spring-reading) @@ -134,7 +135,40 @@ public interface MethodMatcher { + 这个类使用 AspectJ 表达式语言来创建切点,它允许我们使用更加灵活和强大的语法来定义切点。AspectJ 表达式支持更多的特性,包括访问方法参数、异常类型等。 -### 六、最佳实践 +### 六、类关系图 + +~~~mermaid +classDiagram +direction BT +class AbstractRegexpMethodPointcut +class AnnotationMethodMatcher +class AspectJExpressionPointcut +class ControlFlowPointcut +class IntroductionAwareMethodMatcher { +<> + +} +class JdkRegexpMethodPointcut +class MethodMatcher { +<> + +} +class NameMatchMethodPointcut +class StaticMethodMatcher +class StaticMethodMatcherPointcut + +AbstractRegexpMethodPointcut --> StaticMethodMatcherPointcut +AnnotationMethodMatcher --> StaticMethodMatcher +AspectJExpressionPointcut ..> IntroductionAwareMethodMatcher +ControlFlowPointcut ..> MethodMatcher +IntroductionAwareMethodMatcher --> MethodMatcher +JdkRegexpMethodPointcut --> AbstractRegexpMethodPointcut +NameMatchMethodPointcut --> StaticMethodMatcherPointcut +StaticMethodMatcher ..> MethodMatcher +StaticMethodMatcherPointcut --> StaticMethodMatcher +~~~ + +### 七、最佳实践 使用不同类型的方法匹配器来检查特定方法是否满足不同的条件。其中,使用 AnnotationMethodMatcher 来检查方法是否具有特定的注解;使用 AspectJExpressionPointcut 基于 AspectJ 表达式来匹配方法;使用 NameMatchMethodPointcut 基于方法名称来匹配方法;使用 JdkRegexpMethodPointcut 基于正则表达式来匹配方法。 @@ -164,10 +198,6 @@ public class MethodMatcherDemo { } ``` -### 七、源码分析 - -暂无 - ### 八、常见问题 1. **如何编写自定义的 MethodMatcher 实现?**