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