【发布时间】:2018-01-31 10:50:57
【问题描述】:
是否可以通过编程方式控制@RestController 以启用或禁用它?我不想只在每个@RequestMapping 方法中编写代码来做某种if (!enabled) { return 404Exception; }
我见过this question,但这仅在启动时有效。我真正需要的是允许我多次启用或禁用控制器的东西。
我想过不同的方法,但不知道哪些方法在春天可行。
- 实际上控制容器(在我的例子中是码头),因此对特定端点的请求被禁用
- 不知何故控制
RequestMappingHandlerMapping,因为它似乎是那个在url和控制器之间进行映射的类 - 控制
@RestController组件的生命周期,以便我可以随意创建和销毁它,但是我不确定如何触发到端点的映射
【问题讨论】:
-
if(!enabled)逻辑可能比RequestMappingHandlerMapping的自定义实现简单得多。看看像 Togglz 这样的功能切换框架。 -
我想到了一些事情——拦截器(基于 url 路径)或 ControllerAdvice(这可能更接近你想要的)。另外,也许你可以从 DispatcherServlet 开始,但我从未尝试过 b4。
-
您可以为您的端点添加过滤器:stackoverflow.com/questions/19825946/…。检查其中的“启用”属性并采取适当的行动。
标签: spring rest spring-mvc spring-boot spring-restcontroller