springcloud使用nacos配置中心不读取nacos取配置

参考官方例子编写配置

https://github.com/alibaba/sp...

环境代码:

pom:

    <properties>

<java.version>1.8</java.version>

<spring-cloud.version>2021.0.1</spring-cloud.version>

</properties>

<dependencies>

<dependency>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-web</artifactId>

</dependency>

<!-- openfeign 远程调用 -->

<dependency>

<groupId>org.springframework.cloud</groupId>

<artifactId>spring-cloud-starter-openfeign</artifactId>

</dependency>

<!--openfeign 需要 loadbalancer -->

<dependency>

<groupId>org.springframework.cloud</groupId>

<artifactId>spring-cloud-loadbalancer</artifactId>

</dependency>

<!-- Nacos 服务注册发现 注册中心 -->

<dependency>

<groupId>com.alibaba.cloud</groupId>

<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>

</dependency>

<!-- Nacos 配置中心 -->

<dependency>

<groupId>com.alibaba.cloud</groupId>

<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>

</dependency>

</dependencies>

<dependencyManagement>

<dependencies>

<dependency>

<groupId>com.alibaba.cloud</groupId>

<artifactId>spring-cloud-alibaba-dependencies</artifactId>

<version>2021.0.1.0</version>

<type>pom</type>

<scope>import</scope>

</dependency>

<dependency>

<groupId>org.springframework.cloud</groupId>

<artifactId>spring-cloud-dependencies</artifactId>

<version>${spring-cloud.version}</version>

<type>pom</type>

<scope>import</scope>

</dependency>

</dependencies>

</dependencyManagement>

bootstrap.properties

spring.cloud.nacos.config.server-addr=192.168.1.104:8848

spring.application.name=coupon

CouponController.java

@RefreshScope

@RestController

@RequestMapping("coupon/coupon")

public class CouponController {

/** 从 Nacos 配置中心读取配置 */

@Value("${coupon.user.name}")

private String userName;

@Value("${coupon.user.age}")

private Integer userAge;

@RequestMapping("/test")

public R test() {

return R.ok().put("name", userName).put("age",userAge);

}

}

application.properties

coupon.user.name=zhansan

coupon.user.age=19


问题描述

项目启动无报错,但是不能读取到 Nacos 中配置的数据,而且似乎是根本没有连接到Nacos(注册中心功能可以正常注册),因为如果注释掉application.propertis中的属性 coupon.user.name 则会直接报错,提示@Value("${coupon.user.name}") 读不到配置;

Nacos Config Starter 实现了 org.springframework.cloud.bootstrap.config.PropertySourceLocator接口,并将优先级设置成了最高。

在 Spring Cloud 应用启动阶段,会主动从 Nacos Server 端获取对应的数据,并将获取到的数据转换成 PropertySource 且注入到 Environment 的 PropertySources 属性中,所以使用 @Value 注解也能直接获取 Nacos Server 端配置的内容。

根据上面官方例子中的原理的说明 Nacos Config Starter 实现PropertySourceLocator接口,而我在其实现类中debug并没有执行,由此判断是可能没有连接Nacos, 有熟悉这块的可以给点意见吗?

再就是maven依赖中的一个问题, 这里点击spring-cloud-starter-alibaba-nacos-config进入其pom中有依赖是爆红的,而且.m2/repository 中确实是没有爆红的这些jar包,不知道这个问题是否有影响;

导致Nacos中有些配置类 @ConditionalOnClass 没有生效。

        <!-- Nacos 配置中心 -->

<dependency>

<groupId>com.alibaba.cloud</groupId>

<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>

</dependency>


回答:

原因是 最新版本(2021.0.1.0)移除了 spring-cloud-starter-bootstrap 的支持,改用 spring.config.import

解决方法: https://github.com/alibaba/sp...

2021.0.1.0 Latest
⭐️ Features / Enhancements
[Nacos Config] Support spring.config.import (#2349 )
[Nacos Config] Remove dependency spring-cloud-starter-bootstrap (#2349 )

以上是 springcloud使用nacos配置中心不读取nacos取配置 的全部内容, 来源链接: utcz.com/p/944318.html

回到顶部