1 nacos作为配置中心使用示例
新建一个maven项目,项目名为cloudalibaba-config-nacos-client3377,本文主
要是演示配置中心的使用,所以在项目pom文件中必须引入spring-cloud-starter-
alibaba-nacos-config包。
pom.xml配置文件如下
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>aspire-springcloud</artifactId>
<groupId>com.springcloud</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>cloudalibaba-config-nacos-client3377</artifactId>
<dependencies>
<!--nacos-config-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
<!--nacos-discovery-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<!--web + actuator-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<!--一般基础配置-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
</project>
项目中使用两个配置文件,apllication.yml和bootstrap.yml,跟进springcloud的规定,优先读取bootstrap.yml文件内容。
bootstrap.yml配置文件如下:
server:
port: 3377
spring:
application:
name: nacos-config-client
cloud:
nacos:
discovery:
server-addr: localhost:8848 #Nacos服务注册中心地址
config:
server-addr: localhost:8848 #Nacos作为配置中心地址
file-extension: yaml #指定yaml格式的配置
apllication.yml
spring:
profiles:
#active: dev # 表示开发环境
active: test # 表示测试环境
写一个简单的业务类,如下:
@RestController
@RefreshScope //支持Nacos的动态刷新功能。
public class ConfigClientController
{
@Value("${config.info}")
private String configInfo;
@GetMapping("/config/info")
public String getConfigInfo() {
return configInfo;
}
}
这个示例最终的效果是在nacos控制台上 配置管理-配置列表中新建一个配置文件,连接到nacos上的微服务,都可以直接读取到配置文件的内容。
新建配置文件,会要求输入Data Id,该值在nacos官网中已经说明,nacos的dataId
的完整格式为 ${spring.application.name}-${spring.profile.active}.
${spring.cloud.nacos.config.file-extension}
通过查看上面配置文件的信息,我们的dataId为 nacos-config-client-test.yaml
现在开始演示最终效果
先启动nacos,在nacos上面新建一个配置列表,如下:
启动cloudalibaba-config-nacos-client3377服务
在浏览其中调用接口,看看是否能返回配置文件中config.info 值
可以看到正常读取到了nacos配置中心文件的内容,注意到业务类上面加了一个@RefreshScope注解,该注解的作用是支持Nacos的动态刷新功能,直接修改配置文件里面的内容,看看在不重启cloudalibaba-config-nacos-client3377服务的情况下,服务是否实时读取到配置文件里的信息。
nacos配置文件信息修改如下
重新通过浏览器调用接口,如下
服务成功实时读取到配置文件里的信息。