Spring MVC:如何动态地重新路由到不同的控制器/方法?

时间:2014-05-01 22:56:02

标签: java spring spring-mvc

为了用尽可能少的单词解释用例,我们有一组我们想要弃用的控制器(和相关服务)。在同一个项目中,我们引入了一些新奇的东西来代替它。为简单起见,所有相同的REST端点都由两组工作实现。唯一的区别是第一组控制器命名为/ v1 /,后者/ v2 /.

要验证所有这些新作品是否真正适用于生产,目标是逐步推动该方向的流量。是否"使5%的流量转到新的东西"或者"对于处理来自Factory X的订单的所有电话,请转到新的东西"或其他一些路由逻辑。

我试图不触及旧代码(这需要重新测试所有代码),所以我想可以劫持Spring如何将请求映射到控制器。最初我认为我可以扩展RequestMappingHandlerMapping并覆盖lookupHandlerMethod()调用,但是当该方法在Abstract基类中受到保护时,handlerMethods和urlMap的非常重要的映射是私有的:当我陷入困境时它提供了一个不同但现有的handlerMethod。

我想尽可能多地利用AbstractHandlerMethodMappingRequestMappingHandlerMapping类。目前,在没有访问处理程序映射的情况下,我正在讨论是否要完全使用它们,而是更改lookupPath字符串并创建我自己的HttpServerRequest类,我在其中编辑了请求URI以匹配我的& #34;新"控制器。

有什么想法吗?我希望有一些我不知道的东西。

0 个答案:

没有答案