【发布时间】:2021-07-13 11:41:03
【问题描述】:
我不得不问,因为我找到的答案都无法帮助我解决问题。
我有控制器
@RestController
@RequestMapping("/path")
DefaultController
我想重写它的方法,因为一个特定的客户有特定的逻辑,带有控制器
@RestController
@RequestMapping("/path")
CustomController
可以具有完全相同的方法签名或重写方法,RequestBody 扩展原始请求。
- 我尝试为放置注释的控制器定义一个接口
- 我在 CustomController 上使用了 @Primary 和 @Profile 来强制 Spring 加载它而不是默认版本
解决方案不起作用,因为 Spring 检测到方法的双重映射,即著名的“模糊映射”。
有人知道我该如何解决这个问题吗?
我想只在我需要的地方插入控制器的自定义实现,只覆盖我需要的方法,而不改变请求路径。 自定义服务是不够的,因为有时我必须传递带有附加字段的 RequestBody
我们使用的是springboot 2.4.7,spring 5.3.8
提前致谢
【问题讨论】:
-
如果您能够通过使用每个客户的配置文件来启动应用程序,您就可以做到。但是您是否同时需要这两个客户,您管理这种行为的唯一方法是实施不同的服务。而且我认为以这种方式解决它没有任何问题。
标签: java spring-boot controller customization