学习spring 里的PointCut Interface接口
1.什么是切入点:
概念:一个切入点是用来定义某一个通知该何时执行的一组联结点。再者什么是联结点呢,联结点就是程序执行过程中的一个特定点。
2.spring 里的切入点的接口:
public interface PointCut{
ClassFilter getClassFilter();
MethodMatcher getMethodMatcher();
}
这个getClassFilter()方法顾名思意是用来取得类过滤器的,getMethodMatcher()这个方法是用来的取得方法匹配器的。spring里提供了一些实现的切入点。
3.ClassFilter接口:
public interface ClassFilter {
boolean matches(Class clazz);
}
该接口只定义了一个方法,其参数class代表被检测类的实例,如何切入点适用于该类那么match()方法返回true;否侧返回false;
4.MethodMatcher:接口
public interface MethodMatcher {
boolean matches(Method method, Class targetClass);
boolean isRuntime();
boolean matches(Method method, Class targetClass, Object[] args);
MethodMatcher TRUE = TrueMethodMatcher.INSTANCE;
}
spring 支持两种不同的MethodMatcher,静态的和动态的,一个MethodMatcher是哪一种取决于isRuntime()方法返回值,在使用MethodMatcher之前,spring会调用isRuntime()方法,如果返回false,那么就是静态的MethodMatcher,如果返回true。那么就是动态的。如果切入点是静态的,那么spring会对目标类的每一个方法调用一次matchesmethod,class);其返回值将被缓冲起来方便日后调用该方法时适用,这样,对每个方法的适用性的测试只会进行一次。之后调用该方法是将不再调用matches();如果切入点是动态的,那么spring仍然会在目标方法第一次调用时用matches(Method methhod,Class class);进行一个静态的测试来检查其总的适用性。不过,如果该测试返回true,那么在次基础上,每次该方法调用时 spring 会再次调用matcher(Method ,Class , Object[]);方法,这样,一个动态的MethodMatcher可以根据一次具体的方法调用,而不仅仅是方法本身,来决定切入点是否适用。显然,静态切入点的性能比动态切入点的性能要好的多,所以建议尽量用静态切入点。
5.已经实现的PointCut
a.ComposablePointcut
b.ControlFlowPointcut
c.DynamicMethodMatcherPointcut
d.JdkRegexpMethodPointcut
e.NameMatchMethodPointcut
f.Perl5RegexpMethodPointcut
g.StaticMethodMatcherPointcut
分享到:
相关推荐
这份"Spring学习笔记+学习源码.zip"资源包含了深入学习Spring及其相关技术的知识点,以及实践代码,对提升Spring技能将大有裨益。 首先,我们来详细讨论Spring框架的主要组件和功能: 1. **依赖注入(Dependency ...
### Spring学习笔记知识点详解 #### 一、Spring框架概述 **Spring** 是一个开源的、分层的企业级应用开发框架,旨在简化Java EE应用程序的开发。它的主要目标是提高开发效率,减少耦合度,并提供一种更为简洁的...
springboot学习笔记 spring基础 Spring概述 Spring的简史 xml配置 注解配置 java配置 Spring概述 Spring的模块 核心容器CoreContainer Spring-Core Spring-Beans ...
在本篇Spring学习笔记中,我们将深入探讨如何利用Spring框架的注解方式来实现面向切面编程(AOP)。AOP是一种编程范式,它允许我们定义横切关注点,如日志、事务管理等,然后将这些关注点模块化并插入到应用程序的多...
### Spring2.5 学习笔记关键知识点梳理 #### 搭建Spring的运行环境 - **新建项目**: 使用IDE工具如Eclipse或IntelliJ IDEA创建一个新的Java Web项目。 - **Spring配置文件**: 在项目的`src/main/resources`目录下...
在本篇Spring学习笔记中,我们将深入探讨如何利用Spring配置文件来实现面向切面编程(AOP)。面向切面编程是Spring框架的核心特性之一,它允许我们把关注点分离,将横切关注点(如日志、事务管理、权限控制等)与...
### 马士兵Spring学习笔记知识点汇总 #### 一、面向接口编程(面向抽象编程) **概念:** 面向接口编程是指在设计系统时,尽量通过接口来定义各个组件之间的交互方式,而不是直接依赖于实现类。这种方式使得系统...
本学习笔记将深入探讨Spring AOP的核心概念、工作原理以及实际应用。 1. **核心概念** - **切面(Aspect)**:切面是关注点的模块化,包含业务逻辑之外的横切关注点,如日志、事务管理。 - **连接点(Join Point...
在Spring中,切面通过`@Aspect`注解来定义,而切点(join point)则通过`@Pointcut`注解来指定。通知(advice)如前置通知、后置通知等,可以使用`@Before`, `@After`, `@Around`等注解来实现。 3. **Spring MVC...
在本篇Spring学习笔记中,我们将深入探讨动态代理模式,并结合Spring框架的实现进行分析演示。动态代理模式是Java编程中一种重要的设计模式,它允许我们在不修改原对象代码的情况下,为对象添加额外的功能或行为。...
### Spring学习笔记:深入理解AOP与Annotation驱动的动态代理 #### 核心知识点解析: 在探讨Spring框架中AOP(面向切面编程)及基于Annotation的动态代理之前,我们首先需要了解AOP的基本概念及其在Spring中的实现...
这个“Spring学习笔记.zip”文件很可能包含了关于Spring框架的学习资源,特别是“Spring学习笔记.xmind”文件,可能是以思维导图的形式总结了Spring的核心概念和技术。 首先,Spring框架的基础是IoC(Inversion of ...
在本篇Spring学习笔记中,我们将深入探讨Spring框架的核心特性,包括依赖注入(Dependency Injection,DI)、AOP(面向切面编程)以及Spring的源码解析,同时也会介绍一些实用的开发工具。通过学习这些内容,我们...
10. **预定义Pointcut Advisor**:Spring提供了几种预定义的Pointcut Advisor,如`NameMatchMethodPointcutAdvisor`和`RegexpMethodPointcutAdvisor`,它们分别基于方法名匹配和正则表达式来确定切入点。 11. **...
### 牛人的Spring学习笔记,非常适合初学者 #### 第一课:面向抽象编程 面向抽象编程是一种编程思想,强调在程序设计过程中通过定义抽象层来分离业务逻辑与具体实现细节。这种方式有助于提高软件的可维护性和扩展...
在本篇“spring学习笔记(十六)-声明式事务的例子”中,我们将深入探讨这一主题。 首先,声明式事务管理基于AOP(面向切面编程)实现,Spring通过代理模式在方法调用前后自动插入事务管理的代码。它主要通过两种方式...
### Spring学习笔记知识点详解 #### 一、Spring学习模块概览 Spring框架作为一个全面而强大的企业级应用开发框架,其内部包含多个模块,这些模块分别针对不同的应用场景和技术领域进行了优化设计。了解这些模块有...
在本篇"Spring 学习笔记六"中,我们将深入探讨Spring框架的核心概念和技术细节,同时结合源码分析,以提升对Spring的理解和应用能力。本文档主要关注Spring的依赖注入(Dependency Injection,DI)机制、AOP(面向切...
这份"spring学习笔记共10页.pdf.zip"压缩包文件,显然包含了关于Spring框架的详细学习资料,可能是由一位经验丰富的开发者或教师精心整理的。在10页的笔记中,我们可以期待涵盖Spring框架的基础概念、核心特性以及...
Spring框架是Java开发中广泛使用的轻量级框架,以其依赖注入(Dependency Injection,简称DI)和面向切面编程(Aspect-Oriented Programming,简称AOP)的核心特性,极大地简化了企业级应用的开发。以下是对Spring...