簡體   English   中英

如何在 Spring Boot 應用程序的每個請求上插入延遲?

[英]How can I insert a delay on every request on a Spring Boot application?

我需要測試我的客戶端應用程序在服務器距離很遠並且連接不是很好時的行為方式。 客戶端是使用 Spring 的 RestTemplate 的 JavaFX 應用程序,服務器是 RESTful Spring Boot 應用程序。

如何在服務器收到的每個請求上人為地注入延遲?

您可以添加一個HandlerInterceptor來覆蓋preHandlepostHandle方法。

preHandle請求轉到 Controller之前被調用。

@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception

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);
}

如果您真的想用代碼來做 您可以在配置中添加“ Before Advice”,然后通過poincut將其應用於應用程序中的任何Rest Controller,以查找@RestController批注。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM