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中测试的。
分享到:
相关推荐
比如,`org.aopalliance.intercept.MethodInterceptor`接口定义了拦截器的接口,Spring AOP的`MethodBeforeAdvice`、`AfterReturningAdvice`等通知类型都实现了这个接口。 了解这些jar包的作用后,我们可以看到...
该jar文件包含了Spring AOP的核心类和接口,如`org.springframework.aop.*`包下的`AspectJExpressionPointcut`、`MethodBeforeAdvice`、`AfterReturningAdvice`等。 3. spring-aspects-4.1.6.RELEASE.jar:这个jar...
编程方式**:通过自定义类实现Spring提供的AOP接口,如`MethodBeforeAdvice`、`AfterReturningAdvice`等。 #### 五、Spring AOP 的应用场景 Spring AOP广泛应用于以下场景: - **日志记录**:自动记录方法调用的...
`MethodBeforeAdvice` 和 `AfterReturningAdvice` 是Spring AOP(面向切面编程)中的两种通知类型,它们用于在方法执行前后插入自定义的行为,从而实现对消息的管理和使用。 1. **MethodBeforeAdvice**: `...
4. **自定义通知**:自定义通知类(如上面的`LogAdvice`),它需要实现Spring提供的相应通知接口,如`MethodBeforeAdvice`、`AfterReturningAdvice`等。在这些通知类中,我们可以编写具体的横切关注点逻辑。 通过...
这些通知通过`org.springframework.aop.MethodBeforeAdvice`、`org.springframework.aop.AfterReturningAdvice`等接口实现。 三、连接点(Join Point) 连接点是程序执行中的一个特定点,例如方法的调用。在Spring ...
Spring提供了多种类型的Advice,包括MethodBeforeAdvice(在方法执行前执行)、AfterReturningAdvice(在方法正常返回后执行)等。 4. **切入点(Pointcut)**:定义了通知将被应用的连接点,通常使用表达式来定义...
3. 配置通知:通知是实际执行的操作,可以是Spring的`MethodBeforeAdvice`、`AfterReturningAdvice`等接口的实现。在配置文件中,我们创建一个bean,实现相应的接口,并设置其属性和方法。 四、实例解析 以下是一个...
在Spring 1.2及更早版本中,实现AOP通常依赖于Spring的AOP API,通过创建Advice(通知)并设置代理对象来完成。 Spring提供了四种主要类型的Advice,每种类型对应于方法执行的不同阶段: 1. **Before Advice**:在...
本文将深入探讨Spring AOP的实现,包括MethodBeforeAdvice、AfterReturningAdvice以及MethodInterceptor等关键概念。 一、AOP基础知识 AOP的核心思想是横切关注点,即那些与业务逻辑不直接相关的,但需要在多个...
它是一个实现了`org.springframework.aop.MethodBeforeAdvice`、`org.springframework.aop.AfterReturningAdvice`或`org.springframework.aop.ThrowsAdvice`等接口的对象,可以在方法调用前后执行自定义逻辑。...
在Spring中,Before Advice通过实现`org.springframework.aop.MethodBeforeAdvice`接口来定义。例如: ```java public class LoggingAdvice implements MethodBeforeAdvice { public void before(Method method,...
在Spring AOP中,如果一个类想要作为前置通知,它必须实现`MethodBeforeAdvice`接口,并重写其中的`before`方法。当该类被配置为前置通知时,`before`方法将在目标方法执行前调用。 #### 2. 后置通知(After ...
Spring提供了多种类型的Advice,包括MethodBeforeAdvice、AfterReturningAdvice、ThrowsAdvice等。 2. Pointcut(切点): Pointcut是识别哪些连接点需要应用Advice的规则或模式。它定义了哪些方法应该被增强。在...
Spring 4 框架是Java开发中广泛使用的轻量级框架,它的核心特性包括依赖注入(DI)、面向切面编程(AOP)以及一系列的其他功能,如数据访问、Web MVC、测试等。AOP作为Spring的重要组成部分,允许开发者在不修改原有...
6. **MethodBeforeAdvice**、**AfterReturningAdvice**等:表示不同类型的Advice。 在Spring AOP执行过程中,当调用被代理对象的方法时,实际上会触发AOP代理的拦截逻辑,执行相应的通知,并在适当的时候调用实际的...
我们可以创建一个`SleepHelper`类作为通知,实现`MethodBeforeAdvice`和`AfterReturningAdvice`接口,然后在Spring配置文件中定义切点和通知,并使用`ProxyFactoryBean`生成代理对象,使得每次调用`sleep`方法时,`...
在Spring AOP中,我们可以定义“通知”(advice)来执行特定的操作,这些通知可以被应用到目标对象的方法执行的不同阶段。接下来,我们将详细探讨四种主要的通知类型,以及如何在Spring AOP中使用它们。 1. **...
本资源包"Spring_ch01-2.zip_springAOP"专注于Spring的面向切面编程(Aspect-Oriented Programming,简称AOP)特性。AOP允许我们在程序设计时将关注点分离,例如日志、事务管理等,使其独立于核心业务逻辑,从而提高...
例如,我们可以创建一个`SleepHelper`类,实现`MethodBeforeAdvice`和`AfterReturningAdvice`接口,分别在`sleep()`方法调用前后执行辅助操作。接着,通过`ProxyFactoryBean`生成目标对象的代理,这样在调用`sleep()...