长话短说,我不希望在春季启动时更换现有的控制器。

因此,我创建了一个新的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

最佳答案

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

V2版本:

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


V1版本:

@RepositoryRestController("PartControllerV1")
public class PartController {

10-01 20:15