解决Spring 异常:defined in BeanDefinition defined in class path resource [XXX], could not be registered.
·

背景
因为项目越来越臃肿,需要对项目进行拆包处理。
问题
在拆完包后,发现报了个“defined in BeanDefinition defined in class path resource [XXX], could not be registered. A bean with that name has already been defined in class path resource”的错误。
这个错误的意思就是当前名称的bean已经注册了。因为有些公共的包里面有对应的一些bean。所以如果在引用这些公共的包的时候,如果命名了同名的bean就会报这个问题。
因为在spring中被spring管理的bean必须唯一。
重名的话,在引用的时候,spring就不知道该怎么处理了。
解决
Action:
Consider renaming one of the beans or enabling overriding by setting spring.main.allow-bean-definition-overriding=true
这个是给出的解决方法。(看到英文千万不能慌)
意思是给出了两个解决方案。
renaming one of the beans
重命名其中一个重复的bean。
这个就是直接找到bean的文件名,在@Bean注解中设置直指定的名称。
@Bean(name="CCC")
enabling overriding
允许Spring执行覆盖操作。
覆写操作,就是在配置文件中,添加spring.main.allow-bean-definition-overriding=true
如果是yaml文件,格式如下:
spring:
main:
allow-bean-definition-overriding: true
再去试下代码,你发现应该OK了。
更多推荐
所有评论(0)