【SpringCloud】Nacos-02-配置管理

创建配置

一般对开关型配置进行配置,方便后面的热更新
image

统一配置管理

需要把nacos地址放入bootstrap.yml文件中,因为这个是优先级最高的。
image

  1. 将nacos的配置管理依赖导入
<!-- nacos配置管理依赖 -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
  1. 在服务下面创建bootstrap.yml引导配置文件,优先级高于application.yml
spring:
application:
name: userservice
profiles:
active: dev # 环境, 和name连起来,就是 userservice-dev
cloud:
nacos:
server-addr: localhost:8848 # nacos地址
config:
file-extension: yaml # 文件后缀名
  1. 编写测试代码,在UserController
@Value("${pattern.dateformat}")
private String dateformat;
@GetMapping("now")
public String now(){
return LocalDateTime.now().format(DateTimeFormatter.ofPattern(dateformat));
}

通过/user/now返回的页面可以发现,确实读取到了nacos中的配置
image

配置热更新

nacos中的配置文件变更后,微服务无需重启就可以感知,不过需要通过下面两种配置实现:
两种方式

  1. 使用@RefreshScope注解
    @Value注入的变量所在的类上添加该注解即可。
  2. 使用@ConfigurationProperties注解

在PatternProperties中

@Data
@Component
@ConfigurationProperties(prefix = "pattern") // 指定属性前缀,自动拼接到成员变量上 pattern.*
public class PatternProperties {
private String dateformat; // pattern.dateformat
}

在UserController中

@Slf4j
@RestController
@RequestMapping("/user")
// @RefreshScope //方式1
public class UserController {
@Autowired
private UserService userService;
// @Value("${pattern.dateformat}")
// private String dateformat; //方式1
// 方式2
@Autowired
private PatternProperties properties;
@GetMapping("now")
public String now(){
// return LocalDateTime.now().format(DateTimeFormatter.ofPattern(dateformat)); //方式1
return LocalDateTime.now().format(DateTimeFormatter.ofPattern(properties.getDateformat())); // 方式2
}
}

多环境配置共享

微服务启动过程时,会从nacos读取多个配置文件

  • [spring.application.name]-[spring.profiles.active].yaml, 例如userservice-dev.yaml
  • [spring.application.name].yaml, 例如userservice.yaml
    无论profile怎么变,[spring.application.name].yaml这个文件一定会加载,因此多环境共享配置,可以写入这个文件

多种配置优先级

userservice-dev.yaml > userservice.yaml > 本地配置
image

posted @   chendsome  阅读(25)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 一文读懂知识蒸馏
· 终于写完轮子一部分:tcp代理 了,记录一下
点击右上角即可分享
微信分享提示