参考官方例子编写配置
https://github.com/alibaba/spring-cloud-alibaba/blob/2.2.x/spring-cloud-alibaba-examples/nacos-example/nacos-config-example/readme-zh.md
## 环境代码:
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
DanielLiu1123 released this 26 days ago
⭐️ Features / Enhancements