`

Spring AOP中MethodBeforeAdvice、AfterReturningAdvice

阅读更多
Spring AOP中MethodBeforeAdvice、AfterReturningAdvice和MethodInterceptor的执行顺序
在Spring 的AOP中,如果一个Proxy同时实现MethodBeforeAdvice、AfterReturningAdvice和MethodInterceptor接口,那么这三个Advice的执行顺序是什么样的呢?
经过试验,是和xml文件中的定义顺序有关的。
如果Proxy的接口实现定义为
     
         
            MethodBeforeAdvice
            AfterReturningAdvice
            MethodInterceptor
         
     
那么执行的结果是
MethodBeforeAdvice

MethodInterceptor: before call

Really method excuting

MethodInterceptor: after call

AfterReturningAdvice

也就是说,执行顺序是:MethodBeforeAdvice,MethodInterceptor的调用前的部分,目标方法,MethodInterceptor的调用后的部分,AfterReturningAdvice。

如果proxy的定义是
     
         
            MethodBeforeAdvice
            MethodInterceptor
            AfterReturningAdvice
         
     
执行的结果是
MethodBeforeAdvice

MethodInterceptor: before call

Really method excuting

AfterReturningAdvice

MethodInterceptor: after call
也就是说,执行的顺序是:MethodBeforeAdvice,MethodInterceptor的调用前的部分,目标方法,AfterReturningAdvice,MethodInterceptor的调用后的部分。

如果proxy的定义是
     
         
            MethodInterceptor
            MethodBeforeAdvice
            AfterReturningAdvice
         
     
执行的结果是:
MethodInterceptor: before call

MethodBeforeAdvice

Really method excuting

AfterReturningAdvice

MethodInterceptor: after call
也就是说,执行的顺序是:MethodInterceptor的调用前的部分,MethodBeforeAdvice,目标方法,AfterReturningAdvice,MethodInterceptor的调用后的部分。
以上的顺序是在springframework 1.2.5中测试的。


分享到:
评论

相关推荐

    springAOP 4个jar包

    比如,`org.aopalliance.intercept.MethodInterceptor`接口定义了拦截器的接口,Spring AOP的`MethodBeforeAdvice`、`AfterReturningAdvice`等通知类型都实现了这个接口。 了解这些jar包的作用后,我们可以看到...

    spring-aop-jar

    该jar文件包含了Spring AOP的核心类和接口,如`org.springframework.aop.*`包下的`AspectJExpressionPointcut`、`MethodBeforeAdvice`、`AfterReturningAdvice`等。 3. spring-aspects-4.1.6.RELEASE.jar:这个jar...

    Spring AOP学习资料(pdf)

    编程方式**:通过自定义类实现Spring提供的AOP接口,如`MethodBeforeAdvice`、`AfterReturningAdvice`等。 #### 五、Spring AOP 的应用场景 Spring AOP广泛应用于以下场景: - **日志记录**:自动记录方法调用的...

    Spring中MethodBeforeAdvice,AfterReturningAdvice类对消息的管理和使用

    `MethodBeforeAdvice` 和 `AfterReturningAdvice` 是Spring AOP(面向切面编程)中的两种通知类型,它们用于在方法执行前后插入自定义的行为,从而实现对消息的管理和使用。 1. **MethodBeforeAdvice**: `...

    用xml配置的方式进行SpringAOP开发

    4. **自定义通知**:自定义通知类(如上面的`LogAdvice`),它需要实现Spring提供的相应通知接口,如`MethodBeforeAdvice`、`AfterReturningAdvice`等。在这些通知类中,我们可以编写具体的横切关注点逻辑。 通过...

    spring-aop源码

    这些通知通过`org.springframework.aop.MethodBeforeAdvice`、`org.springframework.aop.AfterReturningAdvice`等接口实现。 三、连接点(Join Point) 连接点是程序执行中的一个特定点,例如方法的调用。在Spring ...

    SpringAOP

    Spring提供了多种类型的Advice,包括MethodBeforeAdvice(在方法执行前执行)、AfterReturningAdvice(在方法正常返回后执行)等。 4. **切入点(Pointcut)**:定义了通知将被应用的连接点,通常使用表达式来定义...

    使用Spring配置文件实现AOP

    3. 配置通知:通知是实际执行的操作,可以是Spring的`MethodBeforeAdvice`、`AfterReturningAdvice`等接口的实现。在配置文件中,我们创建一个bean,实现相应的接口,并设置其属性和方法。 四、实例解析 以下是一个...

    Spring  AOP实现方法大全

    在Spring 1.2及更早版本中,实现AOP通常依赖于Spring的AOP API,通过创建Advice(通知)并设置代理对象来完成。 Spring提供了四种主要类型的Advice,每种类型对应于方法执行的不同阶段: 1. **Before Advice**:在...

    spring aop实现

    本文将深入探讨Spring AOP的实现,包括MethodBeforeAdvice、AfterReturningAdvice以及MethodInterceptor等关键概念。 一、AOP基础知识 AOP的核心思想是横切关注点,即那些与业务逻辑不直接相关的,但需要在多个...

    spring aop 拦截器简单实现

    它是一个实现了`org.springframework.aop.MethodBeforeAdvice`、`org.springframework.aop.AfterReturningAdvice`或`org.springframework.aop.ThrowsAdvice`等接口的对象,可以在方法调用前后执行自定义逻辑。...

    Spring AOP - Advice

    在Spring中,Before Advice通过实现`org.springframework.aop.MethodBeforeAdvice`接口来定义。例如: ```java public class LoggingAdvice implements MethodBeforeAdvice { public void before(Method method,...

    Spring AOP四种创建通知(拦截器)类型

    在Spring AOP中,如果一个类想要作为前置通知,它必须实现`MethodBeforeAdvice`接口,并重写其中的`before`方法。当该类被配置为前置通知时,`before`方法将在目标方法执行前调用。 #### 2. 后置通知(After ...

    spring-aop源码解读

    Spring提供了多种类型的Advice,包括MethodBeforeAdvice、AfterReturningAdvice、ThrowsAdvice等。 2. Pointcut(切点): Pointcut是识别哪些连接点需要应用Advice的规则或模式。它定义了哪些方法应该被增强。在...

    spring4 AOP 源代码

    Spring 4 框架是Java开发中广泛使用的轻量级框架,它的核心特性包括依赖注入(DI)、面向切面编程(AOP)以及一系列的其他功能,如数据访问、Web MVC、测试等。AOP作为Spring的重要组成部分,允许开发者在不修改原有...

    SpringAOP的源码解析.doc

    6. **MethodBeforeAdvice**、**AfterReturningAdvice**等:表示不同类型的Advice。 在Spring AOP执行过程中,当调用被代理对象的方法时,实际上会触发AOP代理的拦截逻辑,执行相应的通知,并在适当的时候调用实际的...

    SPRING_AOP_概念解析以及例子示范.docx

    我们可以创建一个`SleepHelper`类作为通知,实现`MethodBeforeAdvice`和`AfterReturningAdvice`接口,然后在Spring配置文件中定义切点和通知,并使用`ProxyFactoryBean`生成代理对象,使得每次调用`sleep`方法时,`...

    spring aop 实例

    在Spring AOP中,我们可以定义“通知”(advice)来执行特定的操作,这些通知可以被应用到目标对象的方法执行的不同阶段。接下来,我们将详细探讨四种主要的通知类型,以及如何在Spring AOP中使用它们。 1. **...

    Spring_ch01-2.zip_springAOP

    本资源包"Spring_ch01-2.zip_springAOP"专注于Spring的面向切面编程(Aspect-Oriented Programming,简称AOP)特性。AOP允许我们在程序设计时将关注点分离,例如日志、事务管理等,使其独立于核心业务逻辑,从而提高...

    SPRING AOP 概念解析以及例子示范.pdf

    例如,我们可以创建一个`SleepHelper`类,实现`MethodBeforeAdvice`和`AfterReturningAdvice`接口,分别在`sleep()`方法调用前后执行辅助操作。接着,通过`ProxyFactoryBean`生成目标对象的代理,这样在调用`sleep()...

Global site tag (gtag.js) - Google Analytics