Spring 启动运行时添加控制器



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

意思是,在运行时,用户可以输入控制器名称(如user)和方法名称sayHello,然后提交,并且/user/sayHello/启用而无需重新启动弹簧服务器?

(至于回应什么,这超出了范围,假设回复"OK")

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

似乎泽西岛可以编程方式构建API资源,但是运行时呢?

可以通过在请求映射中使用 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 个部分的任何其他请求。 如果您有一些更复杂的变体,则可以相应地创建请求映射。

加载应用程序上下文后,无法在调度程序 Servlet 中注册新路由。

您可以创建一个控制器方法来使用通配符"捕获"各种请求

@RequestMapping(value="/custom/**", method=RequestMethod.GET)
public T handle() {...}

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

最新更新