问题:引入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里面禁用即可
![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/371bd0605e6641acb1b94d3d8795214d.png)




Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐