`

spring 学习笔记------PointCut接口

阅读更多
学习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




分享到:
评论
1 楼 liujunsong 2009-04-24  
AOP的程序理解起来太困难了,以后维护你程序的人非傻不可.

究竟有啥理由非要加这个东西呢?

相关推荐

    Spring学习笔记+学习源码.zip

    这份"Spring学习笔记+学习源码.zip"资源包含了深入学习Spring及其相关技术的知识点,以及实践代码,对提升Spring技能将大有裨益。 首先,我们来详细讨论Spring框架的主要组件和功能: 1. **依赖注入(Dependency ...

    spring学习笔记

    ### Spring学习笔记知识点详解 #### 一、Spring框架概述 **Spring** 是一个开源的、分层的企业级应用开发框架,旨在简化Java EE应用程序的开发。它的主要目标是提高开发效率,减少耦合度,并提供一种更为简洁的...

    springboot学习思维笔记.xmind

    springboot学习笔记 spring基础 Spring概述 Spring的简史 xml配置 注解配置 java配置 Spring概述 Spring的模块 核心容器CoreContainer Spring-Core Spring-Beans ...

    Spring学习笔记(15)----使用Spring的注解方式实现AOP

    在本篇Spring学习笔记中,我们将深入探讨如何利用Spring框架的注解方式来实现面向切面编程(AOP)。AOP是一种编程范式,它允许我们定义横切关注点,如日志、事务管理等,然后将这些关注点模块化并插入到应用程序的多...

    Spring学习笔记(16)----使用Spring配置文件实现AOP

    在本篇Spring学习笔记中,我们将深入探讨如何利用Spring配置文件来实现面向切面编程(AOP)。面向切面编程是Spring框架的核心特性之一,它允许我们把关注点分离,将横切关注点(如日志、事务管理、权限控制等)与...

    马士兵spring学习笔记

    ### 马士兵Spring学习笔记知识点汇总 #### 一、面向接口编程(面向抽象编程) **概念:** 面向接口编程是指在设计系统时,尽量通过接口来定义各个组件之间的交互方式,而不是直接依赖于实现类。这种方式使得系统...

    spring aop 学习笔记

    本学习笔记将深入探讨Spring AOP的核心概念、工作原理以及实际应用。 1. **核心概念** - **切面(Aspect)**:切面是关注点的模块化,包含业务逻辑之外的横切关注点,如日志、事务管理。 - **连接点(Join Point...

    spring ioc aop mvc boot-学习笔记.docx

    在Spring中,切面通过`@Aspect`注解来定义,而切点(join point)则通过`@Pointcut`注解来指定。通知(advice)如前置通知、后置通知等,可以使用`@Before`, `@After`, `@Around`等注解来实现。 3. **Spring MVC...

    Spring学习笔记(13)----动态代理模式分析演示

    在本篇Spring学习笔记中,我们将深入探讨动态代理模式,并结合Spring框架的实现进行分析演示。动态代理模式是Java编程中一种重要的设计模式,它允许我们在不修改原对象代码的情况下,为对象添加额外的功能或行为。...

    Spring学习笔记

    ### Spring学习笔记:深入理解AOP与Annotation驱动的动态代理 #### 核心知识点解析: 在探讨Spring框架中AOP(面向切面编程)及基于Annotation的动态代理之前,我们首先需要了解AOP的基本概念及其在Spring中的实现...

    Spring学习笔记.zip

    这个“Spring学习笔记.zip”文件很可能包含了关于Spring框架的学习资源,特别是“Spring学习笔记.xmind”文件,可能是以思维导图的形式总结了Spring的核心概念和技术。 首先,Spring框架的基础是IoC(Inversion of ...

    Spring 学习笔记四

    在本篇Spring学习笔记中,我们将深入探讨Spring框架的核心特性,包括依赖注入(Dependency Injection,DI)、AOP(面向切面编程)以及Spring的源码解析,同时也会介绍一些实用的开发工具。通过学习这些内容,我们...

    spring学习笔记2

    10. **预定义Pointcut Advisor**:Spring提供了几种预定义的Pointcut Advisor,如`NameMatchMethodPointcutAdvisor`和`RegexpMethodPointcutAdvisor`,它们分别基于方法名匹配和正则表达式来确定切入点。 11. **...

    spring学习笔记(十六)-声明式事务的例子

    在本篇“spring学习笔记(十六)-声明式事务的例子”中,我们将深入探讨这一主题。 首先,声明式事务管理基于AOP(面向切面编程)实现,Spring通过代理模式在方法调用前后自动插入事务管理的代码。它主要通过两种方式...

    spring学习笔记LBY.pdf

    ### Spring学习笔记知识点详解 #### 一、Spring学习模块概览 Spring框架作为一个全面而强大的企业级应用开发框架,其内部包含多个模块,这些模块分别针对不同的应用场景和技术领域进行了优化设计。了解这些模块有...

    Spring 学习笔记六

    在本篇"Spring 学习笔记六"中,我们将深入探讨Spring框架的核心概念和技术细节,同时结合源码分析,以提升对Spring的理解和应用能力。本文档主要关注Spring的依赖注入(Dependency Injection,DI)机制、AOP(面向切...

    spring学习笔记共10页.pdf.zip

    这份"spring学习笔记共10页.pdf.zip"压缩包文件,显然包含了关于Spring框架的详细学习资料,可能是由一位经验丰富的开发者或教师精心整理的。在10页的笔记中,我们可以期待涵盖Spring框架的基础概念、核心特性以及...

    spring的学习笔记

    Spring框架是Java开发中广泛使用的轻量级框架,以其依赖注入(Dependency Injection,简称DI)和面向切面编程(Aspect-Oriented Programming,简称AOP)的核心特性,极大地简化了企业级应用的开发。以下是对Spring...

Global site tag (gtag.js) - Google Analytics