前面了解了Nacos作为服务注册中心,现在了解下,Nacos作为配置管理中心
以前更改配置后,都需要手动重启工程才行,现在只需要搭上 Nacos ,你就可以在Nacos 上保存后,自动更新工程的配置项了
搭建工程(基于上次服务注册的工程)
pom.xml
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter</artifactId>
</dependency>
<!--nacos依赖-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
<version>0.9.0.RELEASE</version>
</dependency>
<!--nacos 配置中心-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-alibaba-nacos-config</artifactId>
<version>0.9.0.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>
bootstrap.yml
网上找的解释词:
创建配置文件名为bootstrap.yml,一定是bootstrap.xxx
原因:
Nacos同springcloud-config一样,在项目初始化时,要保证先从配置中心进行配置拉取,拉取配置之后,才能保证项目的正常启动。springboot中配置文件的加载是存在优先级顺序的
bootstrap优先级高于application
spring:
cloud:
nacos:
config:
server-addr: 127.0.0.1:8848
file-extension: yaml
prefix: nacos-config
profiles:
active:
application.yml
server:
port: 8860
spring:
application:
name: nacos-config
cloud:
nacos:
discovery:
server-addr: 127.0.0.1:8848
nacos:
cofing:
name : nacosconfig
function: study
创建Controller
需要@RefreshScope进行标记,表示 当前类下的配置支持动态更新
@RestController
@RefreshScope
public class ConfigController {
@Value("${nacos.cofing.name}")
private String name;
@Value("${nacos.cofing.function}")
private String book;
@GetMapping("/name")
public String getName() {
return name;
}
@GetMapping("/function")
public String getFunction() {
return book;
}
}
在Nacos上进行配置
新建配置Data ID的规则:
${prefix}-${spring.profile.active}.${file-extension}
-- `prefix` 默认为 `spring.application.name` 的值,也可以通过配置项 `spring.cloud.nacos.config.prefix`来配置
-- `spring.profile.active` 即为当前环境对应的 profile,详情可以参考 [Spring Boot文档](`https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-profiles.html#boot-features-profiles`)。 **注意:当 `spring.profile.active` 为空时,对应的连接符 `-` 也将不存在,dataId 的拼接格式变成 `${prefix}.${file-extension}`
-- `file-exetension` 为配置内容的数据格式,可以通过配置项 `spring.cloud.nacos.config.file-extension` 来配置。目前只支持 `properties` 和 `yaml` 类型
我这里命名为: nacos-config.yaml
bootstrap.yml dataIdPrefix这里可以解释 Data ID的规则里 prefix 的 释义
构造dataIddataId是由 dataIdPrefix + "." + fileExtension
构造而成
通过跟踪代码,我们可以发现
Nacos 是通过 dataId
也就是 dataIdPrefix + "." + fileExtension
来获取的Nacos上的配置信息
编写Nacos上的配置信息
Nacos上的配置信息编写好后点发布就ok了
启动工程
访问:http://localhost:8860/function
发现已经是Nacos上的配置信息了
网友评论