springboot aop 记录程序运行时间
时间: 2023-10-04 22:08:47 浏览: 98
在 Spring Boot 中,可以通过 AOP(面向切面编程)来记录程序运行时间。具体实现步骤如下:
1. 创建一个切面类,使用 @Aspect 注解标识该类为切面类。
2. 定义一个方法,使用 @Around 注解标识该方法为环绕通知,即在目标方法执行前后都会执行该方法。
3. 在环绕通知方法中,使用 System.currentTimeMillis() 记录当前时间,执行目标方法,再次使用 System.currentTimeMillis() 记录当前时间,计算出程序运行时间。
4. 将程序运行时间记录到日志中,可以使用 log4j2、slf4j 或者 Spring Boot 自带的日志框架。
下面是一个示例代码:
```java
@Aspect
@Component
public class TimeAspect {
private static final Logger logger = LoggerFactory.getLogger(TimeAspect.class);
@Around("@annotation(com.example.demo.annotation.LogTime)")
public Object logTime(ProceedingJoinPoint joinPoint) throws Throwable {
long start = System.currentTimeMillis();
Object result = joinPoint.proceed();
long end = System.currentTimeMillis();
logger.info("{} 方法执行时间为 {} ms", joinPoint.getSignature().getName(), end - start);
return result;
}
}
```
在上面的代码中,我们使用了 @LogTime 注解来标识需要记录程序运行时间的方法。在环绕通知方法中,使用了 ProceedingJoinPoint 类来执行目标方法,最后将程序运行时间记录到日志中。
需要注意的是,为了使切面生效,需要在 Spring Boot 的配置类中添加 @EnableAspectJAutoProxy 注解。
阅读全文