文章目录
- 前言
- 配置中心 - 数据隔离
- 示例
- 1.先创建命名空间
- 2.创建配置
- 3.克隆配置
- 4.动态切换环境
- 5.yml多文档模式
- spring.profiles.active=dev
- spring.profiles.active=test
- 总结
前言
上一章简单了解了Nacos配置中心的基本用法,这一章将开始Nacos配置中心的实战案例。
配置中心 - 数据隔离
在Nacos配置中心里面一个命名空间对应多个组,一个组对应多个Data Id
使用Dataid区分多套配置
使用分组区分多种微服务
使用Namespace(名称空间)区分多套环境
示例
1.先创建命名空间
创建好命名空间后,在配置列表中也可以看到命名空间
2.创建配置
点击创建配置
order组通用配置common.properties,填写好点击发布
order.timeout=1min
order.auto-confirm=1h
order组数据库配置database.properties
order.db-url=order_dev
3.克隆配置
创建完成后,勾选需要克隆的配置点击克隆
选择需要克隆的组
克隆完成后点击test组修改需要的配置属性值
4.动态切换环境
在nacos中配置完后进行项目配置
application.yml
#配置中心
server:port: 8080servlet:context-path: /
spring:application:name: qf-service-order# 配置nacos地址(告诉当前应用nacos在哪里)cloud:nacos:server-addr: 127.0.0.1:8848config:# 指定命名空间namespace: devconfig:# 从Nacos配置中心导入两个配置文件,并属于order分组import:- nacos:common.properties?group=order- nacos:database.properties?group=order
配置类
@Component
@ConfigurationProperties(prefix = "order") //配置批量绑定在nacos下,可以无需@RefreshScope就能实现自动刷新
@Data
public class OrderProperties {String timeout;String autoConfirm;String dbUrl;
}
Controller
@Autowired
OrderProperties orderProperties;@GetMapping("/config")
public String config(){return "order.timeout="+orderProperties.getTimeout()+"; " +"order.auto-confirm="+orderProperties.getAutoConfirm() +";"+"order.db-url="+orderProperties.getDbUrl();
}
启动项目,先查看日志
可以看到加载配置文件成功,访问接口查看加载值。
5.yml多文档模式
场景:在开发环境需要3个配置文件,而在生成环境需要6个配置文件。此时就需要使用yml的多文档模式
application.yml
# yml多文档模式
server:port: 8080servlet:context-path: /
spring:profiles:active: devapplication:name: qf-service-order# 配置nacos地址(告诉当前应用nacos在哪里)cloud:nacos:server-addr: 127.0.0.1:8848config:import-check:# 禁用配置导入检,这里主要让程序忽略test分组中不存在的配置文件enabled: false# 动态指定命名空间,默认为devnamespace: ${spring.profiles.active:public}
---
spring:config:# 从Nacos配置中心导入两个配置文件,并属于order分组import:- nacos:common.properties?group=order- nacos:database.properties?group=orderactivate:on-profile: dev
---
spring:config:# 从Nacos配置中心导入两个配置文件,并属于order分组import:- nacos:common.properties?group=order- nacos:database.properties?group=order# 写一个没有在nacos中配置的配置文件- nacos:test.properties?group=orderactivate:on-profile: test
---
spring:config:# 从Nacos配置中心导入两个配置文件,并属于order分组import:- nacos:common.properties?group=order- nacos:database.properties?group=order- nacos:prod.properties?group=orderactivate:on-profile: prod
上面application.yml中dev、test、prod这里为了方便写在一起了,正常是需要拆分为3个yml文件。
测试以上配置是否生效
spring.profiles.active=dev
启动项目,查看日志
访问接口返回数据
order.timeout=1min; order.auto-confirm=1h;order.db-url=order_dev
spring.profiles.active=test
启动项目,查看日志
访问接口返回数据
order.timeout=10min; order.auto-confirm=10h;order.db-url=order_test