在 spring 中创建一个具有相同名称的替换 rest 控制器会导致 bean 名称冲突?

Creating a replacement rest controller in spring with same name, causes bean name conflict?

长话短说,我想更换 spring 引导中现有的控制器,因为它不令人满意。

因此我创建了一个新的休息控制器 class 并开始向其添加功能。 我想维护旧的控制器,直到我将来可以删除它(一旦新版本已经完全实现)

所以我实际上有两个同名的 class。

新建Class

@RestController
@RequestMapping("/api/v2/parts")
public class PartController implements PartsApi {
...

旧Class

@RepositoryRestController
public class PartController {

启动服务时出现以下错误:

Annotation-specified bean name 'partController' for bean class [controller.v2.PartController] conflicts with existing, non-compatible bean definition of same name and class [controller.PartController]

我尝试使用 @Qualifier 注释,但无法编译。

如何在 spring 启动应用程序中有两个同名的 Rest classes?

注意:我不愿意尝试重命名 PartController2

我曾经遇到过类似的问题,在@RestController 注释中传递显式名称后问题得到解决,默认情况下在自动装配时采用 Class 名称。试试这个:

V2版本:

@RestController("PartControllerV2")
@RequestMapping("/api/v2/parts")
public class PartController implements PartsApi {

V1版本:

@RepositoryRestController("PartControllerV1")
public class PartController {