4.1 Nacos配置管理的目的
可用于对各个服务进行统一配置,并且可以通过修改配置信息来进行服务更新,而不用重启服务
; 4.2 Nacos控制台添加配置文件
进入配置列表添加文件
配置信息
配置文件的Data ID: [服务名称]-[环境].[后缀名] (取名要规范,要不然获取不到该文件)
格式:目前支持 yaml 和 properties
4.3 微服务配置拉取
配置获取步骤:
在项目启动时,bootstrap.yml 优先级大于 application.yml,所以可以将 nacos 相关配置信息放入 bootstrap.yml 中用于先读取 nacos中的配置文件
- 在 pom.xml 中引入 Nacos 的配置管理客户端依赖
<dependency>
<groupId>com.alibaba.cloudgroupId>
<artifactId>spring-cloud-starter-alibaba-nacos-configartifactId>
dependency>
- 在 resource 目录添加 bootstrap.yml 文件,进行配置,其优先级高于 application.yml 文件
spring:
application:
name: user_service
profiles:
active: dev
cloud:
nacos:
server-addr: localhost:8848
config:
file-extension: yaml
可以看到,其 服务名称、开发环境、文件后缀名 是要与Nacos控制台中配置文件名 [服务名称]-[环境].[后缀名] 进行对应的
3. 通过@Value("${xxx.xxx}")
从配置文件读取值
4.4 微服务热更新
Nacos 中的配置文件变更后,微服务无需重启就可以感知
方式一:
在 @Value 注入的变量所在类上添加注解 @RefreshScope 实时刷新
@Slf4j
@RestController
@RequestMapping("/user")
@RefreshScope
public class UserController {
@Value("${pattern.name}")
private String name;
@GetMapping("/cfg")
public String showCfg() {
return name;
}
}
方式二(推荐):
创建一个该属性的类进行属性封装,使用 @ConfigurationProperties 注解自动装配属性
@Component
@Data
@ConfigurationProperties(prefix = "pattern")
public class PatternProperties {
private String name;
private String age;
}
4.5 多环境配置共享
微服务启动时,会从nacos读取多个配置文件:
- [服务名称]-[环境].[后缀名],例如:userservice-dev.yaml
- [服务名称].[后缀名],例如:userservice.yaml
无论环境如何变化,[服务名称].[后缀名] 这个文件一定会加载,因此多环境共享配置可以写入这个文件
; 多个配置文件属性重复问题:
当 本地配置文件属性 与 nacos 配置文件中 [服务名称]-[环境].[后缀名],[服务名称].[后缀名] 属性重复时,遵循的优先级为:
[服务名称]-[环境].[后缀名] > [服务名称].[后缀名] > 本地配置
即 远端配置 高于 本地配置
在远端配置中,附有环境配置 高于 共享配置
Original: https://blog.csdn.net/qq_46656580/article/details/127821673
Author: 狗二蛋的幸福生活
Title: 4. 微服务之Nacos配置管理
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/658963/
转载文章受原作者版权保护。转载请注明原作者出处!