在春天用相同的名称创建替换rest控制器会导致Bean名称冲突?

时间:2018-11-11 18:28:42

标签: java spring spring-restcontroller

长话短说,我不能在弹簧靴中更换现有控制器,因为它不能令人满意。

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

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

新课程

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

旧课程

@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 Boot应用程序中使用两个具有相同名称的Rest类?

注意:我讨厌尝试重命名PartController2

1 个答案:

答案 0 :(得分:4)

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

V2版本:

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

V1版本:

@RepositoryRestController("PartControllerV1")
public class PartController {