【发布时间】:2018-04-27 05:45:07
【问题描述】:
目前我正在探索实现“在 Spring Boot 中以 AOP 方式进行请求超时管理”的方法,但有几个限制。要求/限制如下:
- 原意是如果一个api请求的处理时间超过5秒,那么直接返回超时结果,而不是继续处理
-
要监控的rest api由标准spring mvc rest控制器实现。里面的所有api都返回这样的json字符串:
@RestController public class xxxxxx { @RequestMapping(value = "xxxxxxx") public String xxxxxx(@RequestParam(value = "xxxx", required = true) String xxxx) { .... return json.toString(); } } - 超时逻辑需要AOP实现
- (真正的平均部分) 不应更改控制器,这意味着: 不应更改请求生成方法;不应更改返回类型(不允许'Callable<...>')
我已经找到了1个答案(Async approach) 可以完美解决spring async本身的问题,而且超时返回结果非常漂亮,但是它改变了返回类型,并且还触摸了控制器中的代码。我还找到了一个使用 AOP 的解决方案(AOP approach),但场景与我的完全不同。它已经将一些业务逻辑移动到 AOP 类中,但不允许我接触控制器代码。如果有人能提供解决方案,我将不胜感激。不能满足所有限制但最小化差异的解决方案也被接受。
【问题讨论】:
标签: spring rest spring-boot spring-aop spring-async