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

Spring boot runtime add controller?

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

意思是当运行时,用户可以输入一个控制器名称(例如user),和方法名称sayHello,然后提交,并且/user/sayHello/没有启用重新启动 spring 服务器?

(至于回复什么,超出范围,假设回复'OK')

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

看来 jersey 可以 Programmatically build API Resource ,但是 runtime 怎么样?

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

您可以创建一个控制器方法来"catch"各种带有通配符的请求

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

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

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