springboot / spring-mvc或Jersey是否可以在运行时添加控制器(&方法)?
运行时的含义,用户可以输入控制器名称(例如user
)和方法名称sayHello
,然后提交,并启用/user/sayHello/
而不重新启动spring服务器?
(关于响应什么,这超出了范围,只是假设回复'确定')
如果spring无法实现它,哪个JVM rest框架支持这样的功能?
看起来球衣可以Programmatically build API Resource,但运动时怎么样?
答案 0 :(得分:2)
您可以通过在请求映射中使用URI模板来实现此结果。假设变化的数量是有限的,您可以将请求映射抽象到所需的最小量。
@RequestMapping(value="/{var1}/{var2}", method=RequestMethod.GET)
public HttpStatus handleRequest(@PathVariable String var1, @PathVariable String var2) {
callSomeService(var1, var2);
return HttpStatus.OK;
}
上面的例子会抓住你的" / user / sayHello"请求,或路径中包含2个部分的任何其他请求。如果您有一些更复杂的变体,则可以相应地创建请求映射。
答案 1 :(得分:1)
在加载应用程序上下文后,在Dispatcher Servlet中注册新路由是不可行的。
您可以使用通配符
创建一个控制各种请求的controlelr方法@RequestMapping(value="/custom/**", method=RequestMethod.GET)
public T handle() {...}
然后在方法体中手动路由请求。