统一配置管理
在管理端这个按钮 新建一个配置管理
Data ID: 【服务名】【profile属性】【后缀名】
对于需要配置的服务引入依赖,比如提供者
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
增加配置文件bootstrap.yml,你可以将springcloud的配置移动到这里来,将application.yml的相关配置注解。
spring:
application:
name: userservice
profiles:
active: dev
cloud:
nacos:
server-addr: localhost:8848
config:
file-extension: yaml
细心的我们可以发现
一个是springboot的logo,一个是springcloud的logo。
对配置管理进行测试
再你的controller类中
// 注入nacos中的配置属性
@Value("${pattern.dateformat}")
private String dateformat;
// 编写controller,通过日期格式化器来格式化现在时间并返回
@GetMapping("now")
public String now(){
return LocalDate.now().format(
DateTimeFormatter.ofPattern(dateformat, Locale.CHINA)
);
}
总结
在nacos中添加配置管理
微服务中引入nacos的config依赖
添加bootstrap.xml,配置cloud的属性值。
配置热更新
配置文件变更后,我们需要重启才可以 感知数据的变化,我们其实可以实现自动刷新
方式一
给所在类加注解
@RefreshScope
这种方式比较简单
方式二
书写一个新的配置类,将变量定义为该类的属性,例如
注册为bean
@Autowired
private PatternProPerties proPerties;
通过自动装配获取该对象,然后通过get()方法获取属性,这样也可以实现。
总结
不是所有的配置都适合放到配置中心,维护很繁琐
将需要运行时调整的参数放到nacos配置中心,也就是自定义的配置
配置共享
微服务启动时可以从nacos中读取多个配置文件
比如我这里配置了两个。它们的优先级如下:
【服务名】-【profile】.yaml>【服务名】.yaml>bootstrap.yml
其中【服务名】.yaml是共享配置管理,你在该服务的其他实例中也是可以访问和使用它的配置属性值,不需要配置,是默认的。
你可以通过这个类来定义配置的属性来检验。
不过你也可以令一些自定义名称的配置文件共享。
使用方式:在你的bootstrap.yml文件下
一:标红的地方就是我们额外加的
cloud:
nacos:
server-addr: localhost:8848 # Nacos地址
config:
file-extension: yaml # 文件后缀名
shared-configs: # 多微服务间共享的配置列表
- dataId: common.yaml # 要共享的配置文件id
二:
extends-configs: # 多微服务间共享的配置列表
- dataId: extend.yaml # 要共享的配置文件id
位置和之前的一致,就是配置属性关键字变了。
总的优先级如下: