nacos配置部署与管理
- 配置文件
- 配置获取顺序:
- nacos配置热部署
- 方式一:@RefreshScope
- 方式二:@ConfigurationProperties
配置文件
首先新建配置文件
- Data ID:配置文件的名称(唯一)
- 命名规范:服务名称-运行环境-后缀名(一般使用你yaml)
- Group:分组名称,一般使用默认
- 配置内容:一般填写需要频繁更换修改的配置,例如:一些开关,参数之类的
配置获取顺序:
项目启动
>>读取bootstrap.yml文件
>>读取nacos配置文件
>>读取本地配置文件application.yml
>>创建spring容器
>>加载bean
因为读取nacos配置文件的优先级要比application的优先级高,所以nacos的配置信息放在application里就不能满足我们的需求,所以spring提供了一个bootstrap的文件,它的优先级要比nacos高,我们习惯把nacos的配置信息存放在bootstrap中
- 引入nacos的配置管理客户端依赖
<!-- nacos配置-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
<version>2.2.5.RELEASE</version>
</dependency>
- 创建bootstrap.yml文件配置nacos信息
spring:
application:
name: userservice #服务名称
profiles:
active: dev #开发环境
cloud:
nacos:
config:
file-extension: yaml #文件后缀名
server-addr: localhost:8848 #nacos地址
- 通过@value注解获取相应的配置信息
@Component
@Data
public class Confix {
@Value("${pattern.dataformat}") //yyyy-MM-dd HH:mm:ss
private String dataformat;
}
@Autowired
private Confix confix;
@GetMapping("/get")
public String now(){
return LocalDateTime.now().format(DateTimeFormatter.ofPattern(confix.getDataformat()));
}
nacos配置热部署
通过@RefreshScope注解可以实现配置的热部署,经过@RefreshScope注解修饰的bean,将被RefreshScope进行代理,用来实现配置、实例热加载,即当配置变更时可以在不重启应用的前提下刷新bean中相关的属性值
@Component
@Data
@RefreshScope
public class Confix {
@Value("${pattern.dataformat}")
private String dataformat;
}
使用@ConfigurationProperties注解标注配置类,在通过Nacos发布配置后,配置类会被重新rebind,此时变量动态修改生效,使用的地方通过@Autowired注入。
@Component
@Data
@ConfigurationProperties(prefix = "pattern")
public class Confix {
private String dataformat;
}
前缀名(@ConfigurationProperties(prefix = "pattern"))和变量名(dataformat)拼接后要和配置文件一致