Spring启动运行时添加控制器?

时间:2016-03-08 09:06:38

标签: java spring spring-mvc spring-boot jersey-2.0

springboot / spring-mvc或Jersey是否可以在运行时添加控制器(&方法)?

运行时的含义,用户可以输入控制器名称(例如user)和方法名称sayHello,然后提交,并启用/user/sayHello/而不重新启动spring服务器?

(关于响应什么,这超出了范围,只是假设回复'确定')

如果spring无法实现它,哪个JVM rest框架支持这样的功能?

看起来球衣可以Programmatically build API Resource,但运动时怎么样?

2 个答案:

答案 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() {...}

然后在方法体中手动路由请求。