Annotation-specified bean name 'xxx' for bean class [com.xxx.xxx.xxx] conflicts with existing

服务器启动时报错如下:
Annotation-specified bean name ‘userMapper’ for bean class [com.promote.website.mapper.UserMapper] conflicts with existing, non-compatible bean definition of same name and class [com.promote.user.mapper.UserMapper]
谷歌翻译:
Bean类[com.promote.website.mapper.UserMapper]的注释指定的Bean名称’userMapper’与同名和类[com.promote.user.mapper.UserMapper]的现有,不兼容的Bean定义冲突

Spring 容器开启注解扫描后,在服务器启动时会扫描所有符合配置条件的包下的bean,创建并管理 bean 对象,出现上述错误主要是 Spring 容器里面的 bean 名字重复了。

Spring并不支持不同包下的类名相同的设定。这是因为默认的Spring检索Bean的唯一id(@Service,@Component等注解中的name属性)为类名(Class Name),并不包含包名(Package Name)的信息。

解决方法:

  1. 直接修改相同 bean 的类名,错误信息中有提示是哪个bean 重复。
  2. 注解扫描时可以将路径细化。

猜你喜欢

转载自blog.csdn.net/weixin_40307206/article/details/103548812