springboot 统一打印响应时间
时间: 2023-09-02 07:03:25 浏览: 49
在Spring Boot中,我们可以使用拦截器(Interceptor)来实现统一打印响应时间的功能。
首先,我们需要创建一个实现了HandlerInterceptor接口的拦截器类,该接口包含了三个方法:preHandle、postHandle和afterCompletion。我们可以在preHandle方法中获取请求开始的时间,然后在afterCompletion方法中计算响应时间并打印出来。
以下是一个简单的示例代码:
```java
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.stereotype.Component;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
@Component
public class ResponseTimeInterceptor implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) {
request.setAttribute("startTime", System.currentTimeMillis());
return true;
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,
ModelAndView modelAndView) {
// 什么都不做
}
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler,
Exception ex) {
long startTime = (long) request.getAttribute("startTime");
long endTime = System.currentTimeMillis();
long responseTime = endTime - startTime;
System.out.println("响应时间: " + responseTime + "毫秒");
}
}
```
接下来,我们需要在Spring Boot应用的配置类中注册该拦截器:
```java
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
@Configuration
public class WebConfig implements WebMvcConfigurer {
@Autowired
private ResponseTimeInterceptor responseTimeInterceptor;
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(responseTimeInterceptor);
}
}
```
通过以上步骤,我们就可以在每次请求完成后,在控制台中打印出响应时间了。这样可以方便我们对应用的性能进行监控和优化。