写一个Spring AOP切面类ServiceAspect,用于对项目下com.qst.service包及其子包下的所有方法进行一个切面逻辑处理,具体逻辑为在控制台打印出每个service方法的调用耗时情况,请使用环绕通知写出此切面类的具体实现。
时间: 2024-02-09 10:10:10 浏览: 58
Spring AOP运用Spring AOP技术,要求包含前置通知、后置通知、环绕通知、返回通知、异常返回通知。
下面是一个使用环绕通知实现的Spring AOP切面类ServiceAspect,用于对com.qst.service包及其子包下的所有方法进行一个切面逻辑处理,具体逻辑为在控制台打印出每个service方法的调用耗时情况。
```java
@Aspect
@Component
public class ServiceAspect {
@Around("execution(* com.qst.service..*.*(..))")
public Object around(ProceedingJoinPoint joinPoint) throws Throwable {
long startTime = System.currentTimeMillis();
Object result = joinPoint.proceed();
long endTime = System.currentTimeMillis();
System.out.println(joinPoint.getTarget().getClass().getSimpleName() + "." + joinPoint.getSignature().getName() + "耗时:" + (endTime - startTime) + "ms");
return result;
}
}
```
在上面的代码中,我们首先使用@Aspect和@Component注解来标注ServiceAspect类,并定义了一个around方法,用于实现环绕通知。在around方法中,我们使用@Around注解来标注切面逻辑处理的切入点表达式,即对com.qst.service包及其子包下的所有方法进行切面处理。在环绕通知中,我们首先记录下方法调用的开始时间,然后调用joinPoint.proceed()方法继续执行目标方法,最后记录下方法调用的结束时间,并计算出方法调用的耗时。最后,我们在控制台打印出方法调用的耗时情况。
阅读全文