Nacos配置管理
统一配置管理
在Nacos中添加配置文件*(名称-环境.文件格式)*
测试:
配置内容
pattern:
dateformat: MM-dd HH:mm:ss:SSS
1.引入Nacos的配置管理客户端依赖
<!--nacos的配置管理依赖-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
2.在userservice中的resource目录添加一个bootstrap.yml,这个文件是引导文件,优先级高
spring:
application:
name: userservice
profiles:
active: dev #环境
cloud:
nacos:
server-addr: localhost:8848 #nacos地址
config:
file-extension: yaml #文件后缀名
3.测试,获取配置文件中的日期格式
@Value("${pattern.dateformat}")
private String dataformate;
@GetMapping("now")
public String now(){
return LocalDateTime.now().format(DateTimeFormatter.ofPattern(dataformate));
}
配置热更新
Nacos中的配置文件变更后,微服务无需重启就能感知。
方式一:
在@Value注入的变量所在类上添加注解@RefreshScope
方式二:使用@ConfigurationProperties注解
@Component
@Data
@ConfigurationProperties(prefix = "pattern")
public class PatternProperties {
private String dateformat;
}
@Autowired
private PatternProperties patternProperties;
@GetMapping("now")
public String now(){
return LocalDateTime.now().format(DateTimeFormatter.ofPattern(patternProperties.getDateformat()));
}
多环境配置共享
无论环境如何变化,userservice.yaml一定会加载
测试:
在ParrernProperties类中
@Component
@Data
@ConfigurationProperties(prefix = "pattern")
public class PatternProperties {
private String dateformat;
private String envSharedValue;
}
展示到页面上
@GetMapping("prop")
public String prop(){
return patternProperties.getEnvSharedValue();
}
多种配置的优先级
服务名-profiole.yaml>服务名称.yaml>本地配置