springcloud引入nacos(nacos-discovery)服务报错:Error creating bean with name ‘configurationPropertiesBeans‘
·
问题:引入nacos服务报错:alibaba-nacos-discovery
Error creating bean with name 'configurationPropertiesBeans' defined in class path resource
[org/springframework/cloud/autoconfigure/ConfigurationPropertiesRebinderAutoConfiguration.class]:
Post-processing of merged bean definition failed;
nested exception is java.lang.IllegalStateException: Failed to introspect Class
[org.springframework.cloud.context.properties.ConfigurationPropertiesBeans] from ClassLoader
[sun.misc.Launcher$AppClassLoader@18b4aac2]
排查:springcloud和spring boot版本对应上,并且spring cloud alibaba也对应上;
我的版本:
spring boot:2.6.13
spring cloud:2021.0.5
spring cloud alibaba:2021.0.5.0
一开始引用nacos版本(不引用无法导入版本号):
原本引入:要么没加版本号爆红无法引入,要么加上版本号也不行
<!--引入nacos客户端-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
<version>2.2.6.RELEASE</version>
</dependency>
再次查看官网 spring cloud Alibaba和nacos版本的依赖关系,并没有提及在pom文件里面指定版本,只是说spring cloud alibaba 2021.0.5.0对应nacos版本为2.2.0,没有提及nacos服务发现依赖。


最终在点击进去albaba管理器里面查到对应的:最终问题解决方法是:点击进去alibaba,进入里面搜索查询这个依赖所属版本,然后复制粘贴到子模块里面,显示引入正确的版本号,


最后解决:在子模块user-service的pom.xml文件里面显示添加,并且必须指定版本
<!--引入nacos服务与发现-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
<version>2021.0.5.0</version>
</dependency>
<!--引入nacos注册配置中心-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
<version>2021.0.5.0</version>
</dependency>
最终效果:控制台版本2.0.3版本(下载地址:https://github.com/alibaba/nacos/releases)
疑似原因:父模块统一版本功能没有发挥作用,子模块得显示指定正确的版本
后续:
如果报另外的错误:
Add a spring.config.import=nacos: property to your configuration.
If configuration is not required add spring.config.import=optional:nacos: instead.
To disable this check, set spring.cloud.nacos.config.import-check.enabled=false.
翻译:
在您的配置中添加 spring.config.import=nacos: 属性。
如果不需要配置,请改为添加 spring.config.import=optional:nacos:。
要禁用此检查,请设置 spring.cloud.nacos.config.import-check.enabled=false。
``
原因:产生问题的原因是bootstrap.properties比application.properties的优先级要高
由于bootstrap.properties是系统级的资源配置文件,是用在程序引导执行时更加早期配置信息读取;
而application.properties是用户级的资源配置文件,是用来后续的一些配置所需要的公共参数。
但是在SpringCloud 2020.* 版本把bootstrap禁用了,导致在读取文件的时候读取不到而报错,所以我们只要把bootstrap重新导入进来就会生效了。或者用以下方法
解决:如同,在配置文件xml里面禁用即可

更多推荐




所有评论(0)