前提:多个服务实例因为要发现nacos,所以所有服务对nacos的配置得放到bootstrap.yml中
1、引入依赖
<!--nacos配置管理依赖-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
2、新建bootstrap.yml文件
服务名称userservice +开发环境dev +后缀yaml 对应nacos的dataId
spring:
application:
name: userservice # 服务名称
profiles:
active: dev #开发环境,这里是dev
cloud:
nacos:
server-addr: Localhost:8848 # Nacos地址
config:
file-extension: yaml # 文件后缀名
3、验证是否读取到
package com.yufu.user.config;
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
@Data
@Component
@ConfigurationProperties(prefix = "pattern")
public class PatternProperties {
private String dateformat;
private String envSharedValue;
private String name;
}
有了:
4、配置的热更新。服务无需重启
(1)方式一
@RefreshScope
@Value(“${pattern.dateformat}”)
@Data
@Component
@RefreshScope
public class PatternPropertiesother {
@Value("${pattern.dateformat}")
private String dateformat;
private String envSharedValue;
private String name;
}
(2)方式二
@Data
@Component
@ConfigurationProperties(prefix = “pattern”)
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
@Data
@Component
@ConfigurationProperties(prefix = "pattern")
public class PatternProperties {
private String dateformat;
private String envSharedValue;
private String name;
}
更改dateformat后台值自动变化
5、多环境下的共享配置
原因;
[spring.application.name]-[spring.profiles.active].yaml,例如: userservice-dev.yaml
[spring.application.name].yaml,例如: userservice.yaml
无论profile如何变化,[spring.application.name],yaml这个文件一定会加载,因此多环境共享配置可以写入这个文件
两个都会并集加载。
如果在nacos、本地yml配置了相同名的属性,那优先级为:
userservice-dev.yaml>userservice.yaml>本地的