aop操作——环绕通知

博客提及增强类中的增强方法及相关逻辑,围绕信息技术领域中增强类的功能实现展开,为相关开发提供思路。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、增强类中的增强方法(逻辑)

### Spring AOP 环绕通知 使用方法 环绕通知(`@Around`)是 Spring AOP 中功能最为强大且灵活的通知型之一。它可以完全控制目标方法的执行过程,包括在其之前和之后的操作。以下是关于如何使用 `@Around` 通知的具体说明。 #### 定义切点 为了指定哪些方法会被拦截并应用环绕通知,可以使用 `execution()` 表达式来定义切点。例如: ```java @Pointcut("execution(* com.example.service.*.*(..))") public void serviceMethods() {} ``` 上述代码片段中的 `execution()` 表达式指定了所有位于 `com.example.service` 包下的及其子包内的任何返回型的任意方法都将作为切入点[^3]。 #### 编写环绕通知逻辑 通过 `@Around` 注解标记的方法即为环绕通知处理器。此方法接收一个 `ProceedingJoinPoint` 参数,该参数允许我们调用原始的目标方法,并能捕获其结果或异常处理行为。 下面是一个完整的环绕通知示例: ```java import org.aspectj.lang.ProceedingJoinPoint; import org.aspectj.lang.annotation.Around; import org.aspectj.lang.annotation.Aspect; @Aspect public class LoggingAspect { @Around("serviceMethods()") public Object logExecutionTime(ProceedingJoinPoint joinPoint) throws Throwable { long start = System.currentTimeMillis(); try { System.out.println("Before method execution..."); // 调用连接点对应的实际业务方法 Object result = joinPoint.proceed(); System.out.println("After method execution successfully."); return result; } finally { long elapsedTime = System.currentTimeMillis() - start; System.out.println(joinPoint.getSignature() + " executed in " + elapsedTime + "ms"); } } } ``` 在此例子中,环绕通知不仅打印了日志消息,还计算了被增强方法的执行时间[^2]。 #### 配置启用 AspectJ 支持 要让这些配置生效,还需要确保项目已正确设置以支持 AOP 功能。通常情况下,在 Spring Boot 应用程序里只需引入依赖即可自动完成大部分基础工作;而对于传统 XML 或 Java Config 方式的应用程序,则可能需要额外声明开启全局扫描机制以便识别带有 `@Aspect` 注解的组件。 ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-aop</artifactId> </dependency> ``` 以上展示了如何利用环绕通知解决实际开发过程中常见的需求场景——比如性能监控、事务管理或是统一的日志记录等功能实现方式[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值