假设我使用 POSTMAN 单击 URI localhost:8080/admin/hello
和 Hello
类 POST JSON 对象,并有一个类似的 Controller ,
@RequestMapping(value = "/hello", method = RequestMethod.POST)
public ResponseEntity<Hello> helloHome(@RequestBody Hello obj){
//here it goes to service class and doing processes...
return new ResponseEntity<Hello>(obj, HttpStatus.OK);
}
我只希望 URI 命中 Controller 而不是等待响应(因为处理所有服务类进程需要 10 秒,但我想立即返回而不响应)。
我该如何实现它?
最佳答案
将所有处理逻辑移至服务类(如果还没有),并使用 @Async
注释您的服务类方法。这将使方法调用在单独的线程中执行,并且 Controller 方法不会等待服务类方法完成。
@RequestMapping(value = "/hello", method = RequestMethod.POST)
public ResponseEntity<Hello> helloHome(@RequestBody Hello obj){
helloHomeService.processRequest(obj);
return new ResponseEntity<Hello>(obj, HttpStatus.OK);
}
public Class HomeService{
@Async
public void processRequest(Hello obj){
//processing logic
}
}
关于java - 仅加热 URI,不等待 Spring Rest 中的响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53724407/