`
zk_chs
  • 浏览: 215662 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

SpringAop中@Before、@After、@Around执行顺序

 
阅读更多

 这次的博客一样采用全注解进行配置,东西也比较简单

 

 

首先说明,SpringAop需要有aspectjweaver这个依赖,要先加入到maven中;

<dependency>
	<groupId>org.aspectj</groupId>
	<artifactId>aspectjweaver</artifactId>
	<version>1.8.8</version>
</dependency>

 

其次,对于进行增强的方法,需要将其所在类加入到ioc容器中,如下:

 

@Component
public class HelloWorld {

	public void sayHello (){
		System.out.println("Hello World!");
	}
	
}
 

 

接下来需要声明切面,切点,通知,一样需要在spring的ioc容器内,且需要@Aspect注解,

@Aspect是让spring对该进行aop扫描,这样才能扫描到该类内部的切点、通知的注解,如下:

 

@Aspect
@Component
public class HelloWorldAspect {

	@Pointcut(value = "execution(* aop..sayHello(..))")
	public void pointCut (){  
		
	}
	
	@Before(value = "pointCut()")
	private void beforeAdvice (){ 
                System.out.println("===========before advice param:");
	}
	
	@After( value = "pointCut()")
	private void afterAdvice (){
	        System.out.println("===========after advice param:");
	}
	
	@Around(value = "pointCut()")
	private void aroundAdvice (ProceedingJoinPoint pjp) throws Throwable{
		System.out.println("===========before advice param: around");
		pjp.proceed();
		System.out.println("===========after advice param: around");
	}
	
}
 这样一来,我们就完成了切点匹配,前置、后知、环绕通知的声明,然后就可以进行测试了

 

 

测试代码如下:

@Test
public void testAop (){
	ApplicationContext ctx = new AnnotationConfigApplicationContext(AopConfig.class);
	HelloWorld hw = ctx.getBean(HelloWorld.class);
	hw.sayHello();
}
 

 

 

 

输出的结果如下:

 

===========before advice param: around
===========before advice param:
Hello World!
===========after advice param: around
===========after advice param:
 

 

 

 所以我们得到结果:

前置时    环绕通知  ->  前置通知

后置时    环绕通知  ->  后置通知

 

另外spring中还有@AfterReturning、@AfterThrowing,这些将在下一次再写了,如果想早点看的话,可以参考下面的这个链接:

http://docs.spring.io/spring/docs/current/spring-framework-reference/htmlsingle

 

 

分享到:
评论

相关推荐

    征服Spring AOP—— @AspectJ

    在IT行业中,Spring框架是Java企业级应用开发的首选,而Spring AOP(面向切面编程)则是其核心特性之一,用于实现横切关注点的模块化,如日志、事务管理等。@AspectJ是Spring AOP的一种注解驱动方式,它极大地简化了...

    【Spring AOP】@Aspect结合案例详解(一): @Pointcut使用@annotation + 五种通知

    本文带来的案例是:打印Log,主要介绍@Pointcut切点表达式的@annotation方式,以及 五种通知Advice注解:@Before、@After、@AfterRunning、@AfterThrowing、@Around。 本资源是@Pointcut使用@annotation的方式,结合...

    Spring_AOP_before.rar_AOP@before怎么用_Before

    Spring AOP提供了五种不同类型的通知,包括`@Before`、`@AfterReturning`、`@AfterThrowing`、`@Around`和`@After`。`@Before`通知是最简单的一种,它在目标方法执行之前调用。 **3. @Before注解的使用** `@Before`...

    如何在Spring Boot中使用@AfterReturning注解

    6. **考虑与其他通知类型的结合**:除了@AfterReturning,Spring AOP 还提供了@Before、@Around、@After 和@AfterThrowing 等通知类型,可以根据需求灵活选择和组合使用。 通过遵循这些最佳实践,你可以有效地利用 ...

    spring aop jar 包

    Spring AOP支持五种类型的通知:前置通知(Before)、后置通知(After)、返回后通知(After Returning)、异常后通知(After Throwing)和环绕通知(Around)。 3. **切点(Pointcut)**:切点是程序执行过程中的...

    spring aop实例annotation方法实现

    Spring AOP支持两种主要的通知类型:方法前(Before)、方法后(After)以及环绕通知(Around)。这些通知可以通过在方法上添加特定的注解来实现,例如`@Before`、`@After`和`@Around`。 1. `@Before`注解:在目标...

    Spring AOP @AspectJ 入门实例

    使用`@Before`、`@After`、`@AfterReturning`、`@AfterThrowing`和`@Around`注解定义不同类型的通知,例如: ```java @After("serviceMethods()") public void logAfterServiceMethod() { System.out.println("服务...

    Spring AOP 16道面试题及答案.docx

    连接点(Joint Point)是程序执行过程中的特定点,通常在Spring AOP中,它代表一个方法的执行。而切入点(Point Cut)是匹配连接点的规则,它定义了一组连接点的集合,可以是一个断言或表达式。Advice与切入点关联,...

    Spring AOP 概念理解及@AspectJ支持

    **Spring AOP 概念理解** Spring AOP(Aspect Oriented Programming,面向切面编程)是Spring框架的一个重要组成部分,它允许我们通过定义“切面”来模块化横切关注点,比如日志、事务管理、性能监控等。在传统的...

    简单spring aop 例子

    在实际项目中,你可以根据需求定义不同的通知类型,如`@After`、`@Around`、`@AfterReturning`和`@AfterThrowing`,以及复杂的切入点表达式。通过这些,你可以实现更精细的控制,如只对特定方法、异常或返回值进行...

    spring aop的demo

    在`springAop1`这个压缩包中,可能包含了一个简单的应用示例,展示了如何定义一个切面类,以及如何在该类中定义通知方法。例如,我们可能会看到一个名为`LoggingAspect`的类,其中包含了`@Before`注解的方法,用于在...

    Spring AOP完整例子

    例如,我们可以使用`@Before`、`@After`、`@Around`、`@AfterReturning`和`@AfterThrowing`等注解来声明前置、后置、环绕、返回后和异常后通知,这些通知在切点匹配时执行。 接下来,让我们讨论如何在Spring AOP中...

    Spring Aop实例(AOP 如此简单)@Aspect、@Around 注解方式配置

    在 Spring AOP 中,还有其他类型的 Advice,例如 Before Advice、After Advice、Throws Advice 等,每种 Advice 都有其特定的用途和应用场景。 在实际应用中,Spring AOP 可以应用于各种场景,例如日志记录、安全...

    Spring AOP简单demo

    有五种不同类型的通知:前置通知(Before)、后置通知(After)、返回通知(After Returning)、异常通知(After Throwing)和环绕通知(Around)。 4. **织入(Weaving)**:织入是将切面应用到目标对象,创建代理...

    spring aop练习

    Spring AOP(面向切面编程)是Spring框架的重要组成部分,它提供了一种模块化和声明式的方式来处理系统中的交叉关注点,比如日志、事务管理、性能监控等。在这个"spring aop练习"中,我们将深入探讨如何使用注解来...

    spring aop依赖jar包

    2. **通知(Advice)**:通知是在特定切点执行的代码,它可以是前置通知(Before)、后置通知(After)、返回后通知(After Returning)、异常后通知(After Throwing)和环绕通知(Around)。这些通知可以在方法...

    @AspectJ配置Spring AOP,demo

    `springAOP2`可能是一个包含具体示例代码的目录。`基于@AspectJ配置Spring AOP之一 - 飞扬部落编程仓库-专注编程,网站,专业技术.htm`和其关联的`_files`目录可能包含了一个详细的教程或演示如何配置和运行@AspectJ的...

    springAOP中文文档

    这里 `&lt;aop:config&gt;` 标签定义了 AOP 的配置,`&lt;aop:aspect&gt;` 标签定义了切面,`&lt;aop:before&gt;` 和 `&lt;aop:after-returning&gt;` 分别定义了前置通知和后置通知。 通过上述两种方式,我们都可以实现对 `UserService` 类...

    SpringAop实例

    在这个"SpringAop实例"中,可能包含了演示如何创建和使用这两种配置方式的代码示例。文件列表中的"spring32"可能是指Spring 3.2版本的相关文件,这个版本的Spring对AOP的支持已经相当成熟。 通过学习这个实例,你...

    spring AOP入门实例

    以注解为例,`@Aspect`注解用于定义一个切面类,`@Before`、`@After`、`@Around`、`@AfterReturning`和`@AfterThrowing`分别代表在方法执行前、后、前后以及异常发生后执行的通知类型。这些注解可以与`@Pointcut`...

Global site tag (gtag.js) - Google Analytics