org.springframework.context.annotation.ConflictingBeanDefinitionException

org.springframework.beans.factory.BeanDefinitionStoreException: Failed to parse configuration class [com.baidu.web.Application]; nested exception is org.springframework.context.annotation.ConflictingBeanDefinitionException: Annotation-specified bean name 'vipController' for bean class [com.baidu.web.controller.VipController] conflicts with existing, non-compatible bean definition of same name and class [com.baidu.api.controller.VipController]

大概意思是你的项目里有 2 个同名的控制器VipController,你仔细检查发现,确实有 2 个同名控制器,但是他们在不同的包下,为啥同名呢?

由于 SpringMVC 并没有配置按照完全限定名来设置 bean 的名称,所以导致同名控制器冲突。

解决办法

1. 为控制器自定义名称

package com.baidu.api.controller

@RestController(value = "ApiVipController")
public class VipController {
}
package com.baidu.web.controller

@RestController
public class VipController {
}

2. 让 Spring 使用完全限定名来定义 bean 的名称

import org.springframework.context.annotation.FullyQualifiedAnnotationBeanNameGenerator;

@SpringBootApplication(scanBasePackages = {}, nameGenerator = FullyQualifiedAnnotationBeanNameGenerator.class)
public class Application {
}
posted @ 2023-03-07 22:06  沙里  阅读(528)  评论(0)    收藏  举报