问题现象
在使用 nacos
做配置中心时,启动程序报一下错误:
The bean 'nacosRefreshProperties', defined in class path resource [com/alibaba/cloud/nacos/NacosConfigAutoConfiguration.class],
could not be registered. A bean with that name has already been defined in URL
[jar:file:/Users/adore/Software/MAVEN/repo/com/alibaba/cloud/spring-cloud-starter-alibaba-nacos-config/2021.1/spring-cloud-starter-alibaba-nacos-config-2021.1.jar!
/com/alibaba/cloud/nacos/refresh/NacosRefreshProperties.class] and overriding is disabled.
可以看到大体的意思就是程序启动在自动加载配置时,发现了多个配置获取的 name
和value
,在获取配置时我使用的是:
@Data
@Component
@RefreshScope
public class AdoreNacosConfig {
@Value("${adore.appId}")
private String appId;
@Value("${adore.appSecret}")
private String appSecret;
@Value("${adore.appKey}")
private String appKey;
}
定位问题
我们可以查找报错的那两个配置加载类:
查看上面两个图片我们可以看到
nacosRefreshProperties
这个配置已经被弃用,在自动刷新配置的时候会注入这两个配置,导致冲突。
解决方案
- 检查包路径及结构,是否出现包错误
- 启动类加上
@ComponentScan(value = "")
- 在refresh类加上扫描路径
com.alibaba.cloud.nacos