前两篇记录了下载安装nacos、使用nacos作为注册中心:
本篇记录使用nacos作为配置中心,并通过配置页面修改配置进行动态刷新演示
一、项目介绍
继续使用上一篇创建的项目nacos,创建新module cloud-config:
二、开发配置
1、添加依赖
pom.xml
<properties>
<java.version>1.8</java.version>
<spring-cloud.version>Finchley.SR2</spring-cloud.version>
</properties>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-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>
</dependency>
</dependencies>
主要包含:
- SpringCloud配置
- alibaba-nacos-config
这里与注册中心不同的是config,两个可以单独使用
2、添加配置
bootstrap.properties
spring.application.name=cloud-config
server.port=30400
spring.cloud.nacos.config.server-addr=192.168.1.125:8848
配置Nacos server 的地址和应用名
这里配置文件必须使用bootstrap文件名,并且需要配置spring.application.name,具体原因见下面介绍 Nacos 配置管理 dataId部分
3、编写接口
@RestController
@RequestMapping("user")
@RefreshScope
public class UserController {
@Value("${userName:123}")
private String userName;
@RequestMapping("/get")
public String get() {
return userName + " hello";
}
}
使用@Value注解读取配置userName;
使用Spring Cloud原生注解 @RefreshScope 实现配置自动更新
4、验证
启动服务,并用postman访问接口:
注:这里因为读取的键为userName,读取的是电脑配置的用户名,使用其他名字将会打印 123 hello
三、修改配置
打开nacos页面配置列表,点“+”号:
新建配置
点击页面下方发布按钮,确认发布后,看服务日志:
再次访问接口:
可以看到配置已经更新
四、配置分析
1、Data Id
Data Id 是nacos用来定定位配置内容的,完整格式为:
${prefix}-${spring.profile.active}.${file-extension}
- prefix :默认为 spring.application.name,(也可以通过配置项 spring.cloud.nacos.config.prefix来配置)
- spring.profile.active : 即为当前环境对应的 profile,例如dev,当 spring.profile.active 为空时,对应的连接符 - 也将不存在,dataId 的拼接格式变成:
${prefix}.${file-extension}
- file-exetension : 为配置内容的数据格式,(可以通过配置项 spring.cloud.nacos.config.file-extension 来配置。目前只支持 properties 和 yaml 类型)
因此,本例配置spring.application.name为cloud-config,配置文件格式为properties,则Data Id 为“cloud-config.properties”
2、Group
配合Data Id 一起定位配置内容,暂时不修改,使用默认即可DEFAULT_GROUP
五、更多操作
1、查看历史版本
点击配置管理->历史版本,输入Data Id,Group,点击查询,可以看到配置的历史版本,并可以查看详情,或者回滚: