统一配置管理java_Spring Cloud Alibaba(三):使用 Nacos config 实现统一配置管理

本文为 Spring Cloud Alibaba 系列 的第三篇文章,系列文章持续更新,点此 查看更多

前言

Nacos 除了可用于服务注册发现,还可做配置中心功能,本文将通过示例演示如何在 Spring Cloud 下使用 Nacos config 实现统一配置管理;

本示例需要先启动好 Nacos 服务,关于 Nacos 的安装与启用,请参见 Nacos 快速开始 ;

本示例完整代码 点此查看;

正文

配置 Nacos

启动 Nacos 服务,进入 配置管理 > 配置列表 > 新建配置,添加如下配置:

e0b4141be50d43d644d780acd76dfabd.png

Data ID:m02-nacos-config.yaml

Group:DEFAULT_GROUP

配置格式:yaml

配置内容:

server:

port: 8020

user-info:

name: Shawearn

blog-addr: https://blog.csdn.net/shawearn1027

注意此处配置的 Data ID 及 配置格式,后面在项目中的配置需要对应到。

创建项目

新建 Spring Cloud Alibaba 项目 m02-nacos-config;

添加依赖

在项目 pom.xml 中添加如下依赖:

com.alibaba.cloudgroupId>

spring-cloud-starter-alibaba-nacos-configartifactId>

2.0.2.RELEASEversion>

dependency>

spring-cloud-starter-alibaba-nacos-config 为 Nacos 配置中心依赖,其实现配置的动态变更;

自定义配置类

创建配置类 UserInfo.java

package com.shawearn.spring.cloud.alibaba.configs;

import org.springframework.boot.context.properties.ConfigurationProperties;

import org.springframework.stereotype.Component;

import java.io.Serializable;

@Component

@ConfigurationProperties(prefix = "user-info")

public class UserInfo implements Serializable {

private String name;

private String blogAddr;

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public String getBlogAddr() {

return blogAddr;

}

public void setBlogAddr(String blogAddr) {

this.blogAddr = blogAddr;

}

}

UserInfo 用于存放自定义配置数据,通过 @ConfigurationProperties(prefix = "user-info") 指定读取 Nacos 中配置的 user-info 下面的信息;

定义测试用 Controller

UserController.java

package com.shawearn.spring.cloud.alibaba.controller;

import com.shawearn.spring.cloud.alibaba.configs.UserInfo;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.RestController;

@RestController

public class UserController {

@Autowired

private UserInfo userInfo;

@RequestMapping("/userInfo")

public UserInfo userInfo() {

return userInfo;

}

}

此处的 UserController 注入了 userInfo,并在客户端访问 /userInfo 时返回配置对象 userInfo;

添加基础配置

在项目 resources/ 目录下添加 bootstrap.yml 文件,配置如下:

spring:

application:

name: m02-nacos-config

cloud:

nacos:

config:

server-addr: 127.0.0.1:8848

file-extension: yaml

配置说明:

spring.application.name 项目名称;

spring.cloud.nacos.config.server-addr nacos 服务器地址;

spring.cloud.nacos.config.file-extension nacos 配置中心的配置格式,此参数值与上面 配置 Nacos 步骤中的 配置格式 相对应;

spring.cloud.nacos.config.prefix 配置前缀,可不配置,不配置则默认使用 spring.application.name 的值做为前缀;

此处笔者并未在 bootstrap.yml 中指定服务的启动端口,而是将端口配置到了 Nacos 中。

启动项目

启动项目,观察控制台日志输出,看到如下输出:

......

2020-07-26 01:54:03.360 INFO 7544 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port(s): 8020 (http)

......

启用的端口为 8020,也就是笔者在 Nacos 中配置的端口了,表示项目使用了 Nacos Config 中的配置生效了。

测试配置加载

启动项目后,访问 http://localhost:8020/userInfo ,可以看到如下结果:

{

"name":"Shawearn",

"blogAddr":"https://blog.csdn.net/shawearn1027"

}

正是 Nacos 中配置的 user-info ,配置外部加载成功。

测试配置修改

在 Nacos 控制台进入 配置管理 > 配置列表,修改 m02-nacos-config.yaml 配置如下:

server:

port: 8020

user-info:

name: 青年老魏

blog-addr: https://blog.csdn.net/shawearn1027

可以看到项目在控制台中输入如下内容:

......

2020-07-26 02:01:29.271 INFO 7544 --- [-127.0.0.1_8848] c.a.n.client.config.impl.ClientWorker : [fixed-127.0.0.1_8848] [polling-resp] config changed. dataId=m02-nacos-config.yaml, group=DEFAULT_GROUP

2020-07-26 02:01:29.271 INFO 7544 --- [-127.0.0.1_8848] c.a.n.client.config.impl.ClientWorker : get changedGroupKeys:[m02-nacos-config.yaml+DEFAULT_GROUP]

2020-07-26 02:01:29.286 INFO 7544 --- [-127.0.0.1_8848] c.a.n.client.config.impl.ClientWorker : [fixed-127.0.0.1_8848] [data-received] dataId=m02-nacos-config.yaml, group=DEFAULT_GROUP, tenant=null, md5=2940728bde5fbb61b3b6565c8e07b2c5, content=server:

port: 8020

user-info:

name: 青年老魏

blog-addr: https://blog.csdn.net/shawearn1027, type=yaml

......

表示当前项目感知到了 Nacos 中的配置发生了修改,再次访问 http://localhost:8020/userInfo ,结果如下:

{

"name":"青年老魏",

"blogAddr":"https://blog.csdn.net/shawearn1027"

}

可以看到配置已经被更新,至此,使用 Nacos config 实现配置管理也就基本完成了。

补充

Data ID 配置规则

在 配置 Nacos 步骤时,笔者配置了 Data ID 为 m02-nacos-config.yaml,请注意此处的 Data ID 配置需要遵顼一定的格式,完整的 Data ID 格式如下:

${prefix}-${spring.profile.active}.${file-extension}

当项目没有指定 spring.profile.active 时,Data ID 格式如下:

${prefix}.${file-extension}

prefix 可以通过 spring.cloud.nacos.config.prefix 指定,若不指定,会以 spring.application.name 配置值作为 prefix 的配置值;

spring.profile.active 为当前环境对应的 profile,详情可以参考 Spring Boot文档。

file-exetension 为配置内容的数据格式,可以通过配置项 spring.cloud.nacos.config.file-extension 来配置。目前只支持 properties 和 yaml 类型。

在本例中,由于程序未指定 prefix;未指定 spring.profile.active;指定 file-extension = yaml,因此 Data ID = m02-nacos-config.yaml。

Group 配置

可通过 spring.cloud.nacos.config.group 指定配置使用的群组名,默认为 DEFAULT_GROUP;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值