Nacos Config 案例 文档:spring-cloud-alibaba/readme-zh.md at 2021.x · alibaba/spring-cloud-alibaba · GitHub
我使用的Spring Boot 版本为2.6.4,高于2.4.0 版本所以需要使用import 的方式导入配置。
使用之前的配置不生效,踩坑后查了很多资料,最后发现官方文档上已经写明了。
1、首先,修改 pom.xml 文件,引入 Nacos Config Starter
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
2、在配置文件中配置配置中心的相关配置
application-dev.yml
spring:
application:
name: yaomall-coupon
cloud:
nacos:
discovery:
server-addr: 127.0.0.1:8848
config:
server-addr: 127.0.0.1:8848
file-extension: yml #配置的格式 yml
#设置命名空间 这个是新建的dev命名空间(不写就是public)
# namespace: 5ff7df55-0fb2-4911-b4ca-dedcdf249d10
#读取dev(UUID)命名空间下的group分组
# group: *_GROUP_01
group: DEV_GROUP
config:
import:
# 导入nacos配置中心的配置文件
- optional:nacos:yaomall-coupon.yml
3、在nacos 中添加配置文件
添加一个名称为yaomall-coupon.yml 添加到DEV_GROUP组中
添加好后点击发布
4、动态获取配置 — 需要添加一个注解才能生效
需要加@RefreshScopp,然后配合 @Value 一起使用。
@RefreshScope
@RestController
@RequestMapping("coupon/coupon")
public class CouponController {
@Autowired
private CouponService couponService;
@Value("${coupon.user.name}")
private String name;
@Value("${coupon.user.age}")
private String age;
@RequestMapping("/test")
public R test(){
return R.ok().put("name", name).put("age", age);
}
}
注:如果配置中心和当前应用的配置文件中都配置了相同的配置项,优先使用配置中心的配置。
5、演示结果:
A 当前应用的配置文件和配置中心配置文件中有相同配置项。
B 编辑配置文件,编辑完成后点击发布。
在确认发布过程中,有一个对比的过程,这点就很人性化。