Spring 支持的建议类型

简介: 【8月更文挑战第22天】

Spring AOP 支持以下五种建议类型:

  • 前置通知(Before advice)
  • 后置通知(After advice)
  • 返回通知(Returning advice)
  • 异常通知(Throws advice)
  • 环绕通知(Around advice)

建议类型详解

1. 前置通知(Before advice)

前置通知在目标方法执行之前执行。它用于在方法执行之前执行一些自定义逻辑,例如记录、验证或安全性检查。

2. 后置通知(After advice)

后置通知在目标方法执行之后执行,无论方法是否成功完成。它用于在方法执行之后执行一些自定义逻辑,例如清理或日志记录。

3. 返回通知(Returning advice)

返回通知在目标方法成功完成并返回结果后执行。它用于在方法返回之前修改返回结果或执行其他操作。

4. 异常通知(Throws advice)

异常通知在目标方法抛出异常后执行。它用于处理异常或执行其他操作。

5. 环绕通知(Around advice)

环绕通知在目标方法执行前后执行。它允许完全控制方法执行,包括修改方法参数、返回值和异常处理。

示例

以下示例演示了如何使用 Spring AOP 实现每种建议类型:

// 前置通知
@Before("execution(* com.example.MyService.*(..))")
public void beforeAdvice(JoinPoint joinPoint) {
   
    System.out.println("Before advice executed");
}

// 后置通知
@After("execution(* com.example.MyService.*(..))")
public void afterAdvice(JoinPoint joinPoint) {
   
    System.out.println("After advice executed");
}

// 返回通知
@AfterReturning(pointcut = "execution(* com.example.MyService.*(..))", returning = "result")
public void returningAdvice(JoinPoint joinPoint, Object result) {
   
    System.out.println("Returning advice executed");
    System.out.println("Result: " + result);
}

// 异常通知
@AfterThrowing(pointcut = "execution(* com.example.MyService.*(..))", throwing = "exception")
public void throwsAdvice(JoinPoint joinPoint, Throwable exception) {
   
    System.out.println("Throws advice executed");
    System.out.println("Exception: " + exception);
}

// 环绕通知
@Around("execution(* com.example.MyService.*(..))")
public Object aroundAdvice(ProceedingJoinPoint joinPoint) throws Throwable {
   
    System.out.println("Around advice before executed");
    Object result = joinPoint.proceed();
    System.out.println("Around advice after executed");
    return result;
}

总结

Spring AOP 支持五种建议类型,每种类型都有其特定的用例。前置通知、后置通知、返回通知和异常通知用于在方法执行前后执行特定的任务。环绕通知提供对方法执行的完全控制。通过使用这些建议类型,Spring AOP 允许开发人员在不修改目标代码的情况下增强应用程序行为。

目录
相关文章
|
Java API Spring
Spring容器如何使用一个注解来指定一个类型为配置类型
Spring容器如何使用一个注解来指定一个类型为配置类型
338 0
|
Java Spring
spring框架之AOP模块(面向切面),附带通知类型---超详细介绍
spring框架之AOP模块(面向切面),附带通知类型---超详细介绍
553 0
|
前端开发 Java API
Spring Boot之Spring MVC基于注解的控制器(RequestMapping注解类型 重定向与转发 依赖注入)
Spring Boot之Spring MVC基于注解的控制器(RequestMapping注解类型 重定向与转发 依赖注入)
496 0
|
XML Java 测试技术
Spring AOP—通知类型 和 切入点表达式 万字详解(通俗易懂)
Spring 第五节 AOP——切入点表达式 万字详解!
1373 25
|
Java 开发者 Spring
Spring高手之路24——事务类型及传播行为实战指南
本篇文章深入探讨了Spring中的事务管理,特别是事务传播行为(如REQUIRES_NEW和NESTED)的应用与区别。通过详实的示例和优化的时序图,全面解析如何在实际项目中使用这些高级事务控制技巧,以提升开发者的Spring事务管理能力。
621 1
Spring高手之路24——事务类型及传播行为实战指南
|
XML JSON Java
spring,springBoot配置类型转化器Converter以及FastJsonHttpMessageConverter,StringHttpMessageConverter 使用
spring,springBoot配置类型转化器Converter以及FastJsonHttpMessageConverter,StringHttpMessageConverter 使用
1945 1
|
安全 算法 Java
强大!基于Spring Boot 3.3 六种策略识别上传文件类型
【10月更文挑战第1天】在Web开发中,文件上传是一个常见的功能需求。然而,如何确保上传的文件类型符合预期,防止恶意文件入侵,是开发者必须面对的挑战。本文将围绕“基于Spring Boot 3.3 六种策略识别上传文件类型”这一主题,分享一些工作学习中的技术干货,帮助大家提升文件上传的安全性和效率。
1063 0
|
Java 开发者 Spring
spring事务类型,事务传递,隔离级别?
spring事务类型,事务传递,隔离级别?
252 2
|
缓存 安全 Java
Spring AOP 中两种代理类型的限制
【8月更文挑战第22天】
522 0
|
设计模式 安全 Java
一个你可能不曾注意的小东西,Spring依赖注入Bean类型的8种情况
大家好,我是三友~~ 今天来讲的一个你可能不曾注意的小东西,那就是Spring依赖注入支持注入Bean的类型,这个小东西可能看似没有用但是实际又有点小用。
一个你可能不曾注意的小东西,Spring依赖注入Bean类型的8种情况