spring aop 切点多个方法
时间: 2024-09-29 21:03:34 浏览: 44
springboot+aspect实现springaop拦截指定方法.zip
Spring AOP (Aspect Oriented Programming) 允许你在不改变原有业务代码的情况下,通过声明式的方式添加一些横切关注点,如日志记录、事务管理等。当你想要在一个切面应用到多个方法上时,你可以定义一个切点(Pointcut),它是一个匹配一组方法签名的表达式。
例如,如果你有多个服务类里的方法都需要进行性能监控,你可以创建一个通用的切点,比如:
```java
@Pointcut("execution(* com.yourcompany.service.*.*(..))")
public void serviceMethods() {
}
```
这里的`execution(* com.yourcompany.service.*.*(..))`是一个切入点表达式,表示所有在`com.yourcompany.service`包及其子包下的类中定义的方法都将作为目标。
然后,在你的切面(Aspect)类中,可以定义一个通知(Advice)来处理这个切点:
```java
@Around("serviceMethods()")
public Object performLogging(ProceedingJoinPoint joinPoint) throws Throwable {
long startTime = System.currentTimeMillis();
// 执行实际方法
Object result = joinPoint.proceed();
// 记录性能数据
long endTime = System.currentTimeMillis();
logPerformance(joinPoint, startTime, endTime);
return result;
}
```
在这个例子中,`performLogging`会在每个匹配`serviceMethods`切点的方法调用前后运行。
阅读全文