配置中心
将项目中的application.yml或者.properties文件的内容放入nacos中新建的配置文件中。
Data ID:manage-auth-dev 这里的值不能乱写
manage-auth:是配置对应的微服务在nacos中的名字,这样nacos才知道这个配置文件是给谁使用的
-dev:是指开发环境
项目中配置一个bootstrap.yml配置文件,删除原来的application.yml文件
spring:
# 配置完成后会从 manage-auth-dev.yml 的配置文件中读取
application:
name: manage-auth # 与注册在配置中心的服务名一致
profiles:
active: dev
cloud:
nacos:
discovery: # 注册中心
server-addr: 127.0.0.1:8848
config: # 配置中心
file-extension: yml
server-addr: 127.0.0.1:8848
username: nacos
password: nacos
依赖
注意:spring-boot-starter-web与spring-cloud-starter-alibaba-nacos-config和spring-cloud-starter-alibaba-nacos-discovery的版本需要统一,不然就会报错启动不了,如spring-boot-starter-web是2.1.x版本,而spring-cloud-starter-alibaba-nacos-config是2.2.x版本就启动不了
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>2.1.11.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!-- nacos 的注册中心 -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
<version>2.1.2.RELEASE</version>
</dependency>
<!-- nacos 的配置中心 -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
<version>2.1.2.RELEASE</version>
</dependency>
nacos配置在应用间共享
bootstrap.yml
spring:
# 配置完成后会从 manage-auth-dev.yml 的配置文件中读取
application:
name: manage-auth # 与注册在配置中心的服务名一致
profiles:
active: dev
cloud:
nacos:
discovery: # 注册中心
server-addr: 127.0.0.1:8848
config: # 配置中心
file-extension: yml
server-addr: 127.0.0.1:8848
username: nacos
password: nacos
shared-configs: # 跨应用全局共享
- data-id: common.yml
group: DEFAULT_GROUP
refresh: true # 代表是否允许自动刷新
核心配置
shared-configs: # 跨应用全局共享
- data-id: common.yml
group: DEFAULT_GROUP
refresh: true # 代表是否允许自动刷新
只要在服务的配置文件中有了 上面这个核心配置就可以获取到nacos上common.yml 的配置文件的内容
在nacos中,执行的优先级是 如:manage-auth-dev.yml > manage-auth.yml > common.yml
所以我们可以将与服务相绑定的配置信息放入 manage-auth.yml 中,实现与微服务绑定的配置信息
@RefreshScope 实现配置自动更新
假如我们需要修改保存在nacos中jwt的密钥,传统的情况是修改了nacos中密钥对应的配置文件后需要重启对应的服务,不然就无法获得最新的密钥,这样不方便,我们可以通过@RefreshScope 实现配置自动更新
创建一个配置类(@Configuration)用来接收最新的配置信息,这个类上需要@RefreshScope注解,然后就可以通过@Value("${app.auth.secretKey}")来获取到配置文件中最新的配置信息
package com.guming.config;
import lombok.Data;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.context.annotation.Configuration;
@Configuration
@RefreshScope // 通过这个注解实现对nacos的监听,一旦nacos重新发布就会修改对应的值
@Data
public class AppConfig {
@Value("${app.auth.secretKey}")
private String appKey = null;
}