原 SpringFramework核心技术五:Spring AOP API

简介: 一、概念1.Spring的切入点模型使切入点重用独立于建议类型。可以使用相同的切入点来定位不同的建议。该org.springframework.aop.Pointcut接口是中央接口,用来将通知到特定的类和方法。

一、概念

1.Spring的切入点模型使切入点重用独立于建议类型。可以使用相同的切入点来定位不同的建议。

该org.springframework.aop.Pointcut接口是中央接口,用来将通知到特定的类和方法。完整的界面如下所示:

public interface Pointcut {

    ClassFilter getClassFilter();

    MethodMatcher getMethodMatcher();

}

将Pointcut接口拆分为两部分允许重用类和方法匹配部分,以及细粒度合成操作(例如与另一个方法匹配器执行“联合”)。

该ClassFilter接口用于将切入点限制为给定的一组目标类。如果matches()方法始终返回true,则将匹配所有目标类:

public interface ClassFilter {

    boolean matches(Class clazz);
}

该MethodMatcher接口通常更重要。完整的界面如下所示:

public interface MethodMatcher {

    boolean matches(Method m, Class targetClass);

    boolean isRuntime();

    boolean matches(Method m, Class targetClass, Object[] args);
}

该matches(Method, Class)方法用于测试此切入点是否与目标类上的给定方法匹配。可以在创建AOP代理时执行此评估,以避免需要对每个方法调用进行测试。如果2参数matches方法对给定方法返回true,并且isRuntime()MethodMatcher 的方法返回true,则将在每次方法调用时调用3参数匹配方法。这使切入点能够在执行目标通知之前立即查看传递给方法调用的参数。

大多数MethodMatchers都是静态的,这意味着它们的isRuntime()方法返回false。在这种情况下,永远不会调用3参数匹配方法。

二、使用
SpringAOP在工作中,用的地方主要是拦截器、监控和日志等模块。讲的比较抽象,如果毕竟感兴趣,请参考:
SpingAop详解

目录
相关文章
|
6天前
|
Java 开发者 Spring
Spring Framework 中的 @Autowired 注解:概念与使用方法
【4月更文挑战第20天】在Spring Framework中,@Autowired 注解是实现依赖注入(Dependency Injection, DI)的一种非常强大的工具。通过使用 @Autowired,开发者可以减少代码中的引用绑定,提高模块间的解耦能力
29 6
|
7天前
|
安全 Java API
第7章 Spring Security 的 REST API 与微服务安全(2024 最新版)(上)
第7章 Spring Security 的 REST API 与微服务安全(2024 最新版)
27 0
第7章 Spring Security 的 REST API 与微服务安全(2024 最新版)(上)
|
1月前
|
监控 Java 开发者
Spring AOP动态代理
Spring AOP动态代理
43 1
|
30天前
|
设计模式 Java Maven
Spring Aop 底层责任链思路实现-springaopdi-ceng-ze-ren-lian-si-lu-shi-xian
Spring Aop 底层责任链思路实现-springaopdi-ceng-ze-ren-lian-si-lu-shi-xian
35 1
|
1天前
|
前端开发 Java Spring
Spring Framework五大功能模块
Spring Framework五大功能模块
|
2天前
|
安全 Java API
Spring工厂API与原理
Spring工厂API与原理
23 10
|
8天前
|
设计模式 Java 数据库连接
Spring Framework 6 中的设计模式
Spring Framework 6 中的设计模式
21 1
|
23天前
|
XML Java Maven
Spring之Aop的注解使用
Spring之Aop的注解使用
|
29天前
|
Java Spring
Spring 如何实现 AOP
Spring 如何实现 AOP
17 0
|
1月前
|
Java 编译器 程序员
Spring AOP 和 AspectJ 的比较
Spring AOP 和 AspectJ 的比较
37 0