nacos作为配置中心
nacos 除了可以作为注册中心实现服务的注册与发现外同样可以作为配置中心,方便微服务中统一配置和修改。
搭建
基于provider生产者的微服务,删除配置文件 application.yml,新建bootstrap.yml,其中bootstrap.yml 的优先级要高于application.yml 的,内容如下
spring:
cloud:
nacos:
config:
server-addr: 127.0.0.1:8848
file-extension: yaml
prefix: nacos-provider
profiles:
active: dev
application:
name: nacos-provider
server:
port: 8001
spring.cloud.nacos.config.server-addr=127.0.0.1:8848,表示微服务从哪个配置中心上拉取配置;
spring.cloud.nacos.config.file-extension=yaml,表示文件的扩展名;
spring.cloud.nacos.config.prefix=nacos-provider,表示当前服务向配置中心索要 nacos-provider 的配置;
prefix 默认为 spring.application.name 的值,没有的话就是spring.application.name 的值,也可以通过配置
spring.profiles.active=dev,表示像配置中心索要哪个环境的配置;
在 Nacos Spring Cloud 中,dataId 的完整格式如下
${prefix}-${spring.profiles.active}.${file-extension}
以上配置,向配置中心拉取的配置的 dataId 的名称为: nacos-provider-dev.yaml
在pom.xml中新加两个依赖
<!--配置服务所需依赖-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
<!--springcloud高版本默认不加载bootstrap.yml文件,需要在pom里加上依赖-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bootstrap</artifactId>
</dependency>
完整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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.5.1</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.springcloud</groupId>
<artifactId>provider</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>provider</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
<spring-boot.version>2.4.4</spring-boot.version>
<spring-cloud.version>2020.0.2</spring-cloud.version>
<spring-cloud-alibaba.version>2020.0.RC1</spring-cloud-alibaba.version>
</properties>
<dependencyManagement>
<dependencies>
<!-- spring boot 依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>${spring-boot.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!-- spring cloud 依赖 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!-- spring cloud alibaba 依赖 -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>${spring-cloud-alibaba.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>
<!--nacos 服务注册发现-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<!--配置服务所需依赖-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
<!--springcloud高版本默认不加载bootstrap.yml文件,需要在pom里加上依赖-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bootstrap</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
在controller上增加注解 @RefreshScope,让服务可以刷新修改的配置,接口读取 配置文件名为 username 的值并输出
再启动 nacos,在配置列表新建一个Data ID为 nacos-provider-dev.yaml,配置格式为yaml的配置文件,里面只有一个username,也是我们服务需要读取并输出的。
启动服务provider,访问接口 http://localhost:8001/hello
这时看到接口正确读取到了username: nacosprovider,到此全部结束。
需要注意下的是springcloud高版本默认不加载bootstrap.yml文件,需要在pom里加上依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bootstrap</artifactId>
</dependency>
项目下载地址
服务提供方:https://github.com/378526425/springcloud-provider.git (nacos-config分支)
评论区