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 允许开发人员在不修改目标代码的情况下增强应用程序行为。

目录
相关文章
|
4月前
|
Java API Spring
Spring容器如何使用一个注解来指定一个类型为配置类型
Spring容器如何使用一个注解来指定一个类型为配置类型
44 0
|
10月前
|
Java Spring
spring框架之AOP模块(面向切面),附带通知类型---超详细介绍
spring框架之AOP模块(面向切面),附带通知类型---超详细介绍
85 0
|
4月前
|
前端开发 Java API
Spring Boot之Spring MVC基于注解的控制器(RequestMapping注解类型 重定向与转发 依赖注入)
Spring Boot之Spring MVC基于注解的控制器(RequestMapping注解类型 重定向与转发 依赖注入)
62 0
|
26天前
|
缓存 安全 Java
Spring AOP 中两种代理类型的限制
【8月更文挑战第22天】
13 0
|
2月前
|
XML JSON Java
spring,springBoot配置类型转化器Converter以及FastJsonHttpMessageConverter,StringHttpMessageConverter 使用
spring,springBoot配置类型转化器Converter以及FastJsonHttpMessageConverter,StringHttpMessageConverter 使用
300 1
|
3月前
|
Java 开发者 Spring
spring事务类型,事务传递,隔离级别?
spring事务类型,事务传递,隔离级别?
|
4月前
|
前端开发 Java Spring
转换之术:解析Spring MVC中类型转换器的实际运用
转换之术:解析Spring MVC中类型转换器的实际运用
91 0
|
9月前
|
设计模式 安全 Java
一个你可能不曾注意的小东西,Spring依赖注入Bean类型的8种情况
大家好,我是三友~~ 今天来讲的一个你可能不曾注意的小东西,那就是Spring依赖注入支持注入Bean的类型,这个小东西可能看似没有用但是实际又有点小用。
一个你可能不曾注意的小东西,Spring依赖注入Bean类型的8种情况
|
4月前
|
XML Java 数据格式
spring怎么去引用/注入集合/数组类型和 怎么通过 util 名称空间创建 list以及 怎么去通过级联属性赋值
spring怎么去引用/注入集合/数组类型和 怎么通过 util 名称空间创建 list以及 怎么去通过级联属性赋值
60 0
|
4月前
Spring-AOP通知类型示例
Spring-AOP通知类型示例
76 0