如何在Spring Boot应用程序的每个请求上插入延迟?

时间:2017-09-27 21:20:34

标签: java spring spring-mvc

我需要测试当客户端应用程序在远离服务器且连接不是很好时的行为方式。客户端是使用Spring的RestTemplate的JavaFX应用程序,服务器是RESTful Spring Boot应用程序。

如何在服务器获取每个请求时人为地注入延迟?

2 个答案:

答案 0 :(得分:1)

您可以添加覆盖HandlerInterceptorpreHandle方法的postHandle

在请求转到Controller之前,

preHandle将被调用

@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception
完成Controller的方法之后

postHandle将被调用。

 @Override
 public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception

您可以使用Thread.sleep()延迟请求/响应的任何方法。

您必须扩展WebMvcConfigurerAdapter,您可以在其中附加HandlerInterceptor for servlet

@Override
public void addInterceptors(InterceptorRegistry registry) {
    registry.addInterceptor(MyHandlerInterceptor);
}

答案 1 :(得分:-1)

如果您真的想在代码中执行此操作。您可以在配置中添加Before Advice,并通过查找@RestController注释的poincut将其应用于应用程序中的任何Rest Controller。您可以查看更多详细信息here