700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > SpringCloud Alibaba - Nacos 作为配置中心 读取Properties配置信息

SpringCloud Alibaba - Nacos 作为配置中心 读取Properties配置信息

时间:2019-04-01 00:38:51

相关推荐

SpringCloud Alibaba - Nacos 作为配置中心  读取Properties配置信息

SpringCloud Alibaba阿里巴巴致力于对微服务管理配置注册等一整套的解决方案。

简介

Nacos提供用于存储配置和其他元数据的K-V存储,为分布式系统中的外部化配置提供服务器端和客户端支持。使用 Spring Cloud Alibaba Nacos Config,可以在 Nacos Server 集中管理你 Spring Cloud 应用的外部属性配置。

Nacos Config支持多种方式的配置格式,比如:TEXTJSONXMLYAMLHTMLPROPERTIES等。

我们本章先来看下是怎么读取Properties类型的配置。

前提

本地需要安装Nacos Server,具体安装步骤访问Nacos官网文档,Nacos Server 安装

创建项目

使用idea工具创建一个SpringCloud项目。

添加依赖

添加依赖在pom.xml配置文件如下所示:

//...<properties><java.version>1.8</java.version><spring-cloud.version>Greenwich.RELEASE</spring-cloud.version><spring-cloud-alibaba.version>0.2.1.RELEASE</spring-cloud-alibaba.version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!--alibaba nacos config--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId></dependency></dependencies><dependencyManagement><dependencies><!--SpringCloud--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>${spring-cloud.version}</version><type>pom</type><scope>import</scope></dependency><!--SpringCloud Alibaba--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-alibaba-dependencies</artifactId><version>${spring-cloud-alibaba.version}</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement>//...

bootstrap引导配置

Nacos Config相关的配置必须在bootstrap.yml或者bootstrap.properties文件内添加。

配置内容如下所示:

spring:application:name: alibaba-nacos-config-client# nacos config cloud:nacos:config:server-addr: 127.0.0.1:8848

spring.application.name

spring-cloud-starter-alibaba-nacos-config依赖默认会使用该值的内容作为DATA-ID来匹配读取Nacos Config,读取规则下面介绍。spring.cloud.nacos.config.server-addr

配置nacos server的地址信息,nacos server本地安装访问Nacos Server 安装

读取Nacos配置

在启动类内添加读取Nacos Config部分代码,为了跟下一步做铺垫来测试自动更新,我们间隔1秒后再次读取配置内容,编码如下所示:

/*** Nacos Config Properties方式** @author:恒宇少年 - 于起宇* <p>* DateTime:-03-01 11:20* Blog:* WebSite:/u/092df3f77bca* Gitee:/hengboy* GitHub:/hengyuboy*/@SpringBootApplicationpublic class SpringCloudAlibabaNacosConfigPropertiesApplication {/*** logger instance*/static Logger logger = LoggerFactory.getLogger(SpringCloudAlibabaNacosConfigPropertiesApplication.class);public static void main(String[] args) throws Exception {ConfigurableApplicationContext applicationContext = SpringApplication.run(SpringCloudAlibabaNacosConfigPropertiesApplication.class, args);while (true) {//当动态配置刷新时,会更新到 Enviroment中,因此这里每隔一秒中从Enviroment中获取配置String userName = applicationContext.getEnvironment().getProperty("hengboy.name");String userAge = applicationContext.getEnvironment().getProperty("hengboy.age");logger.info("配置信息,名称:{},年龄:{}", userName, userAge);TimeUnit.SECONDS.sleep(1);}}}

测试

接下来我们来测试是否可以从Nacos Config内读取相关的配置信息,我们需要访问Nacos Console控制台来添加配置信息。

访问:Nacos Console,默认用户名/密码为:nacos/nacos

添加 Nacos Config

通过配置列表内添加配置信息,添加时DATA-ID的组成部分为:{spring.application.name}.{file-extension}

file-extension文件后缀名默认为properties,如果需要修改,在bootstrap文件内进行修改配置spring.cloud.nacos.config.file-extension的值。

添加的配置信息如下所示:

DATA ID : alibaba-nacos-config-client.propertiesGroup : DEFAULT_GROUP配置内容 : hengboy.name=admin-propertieshengboy.age=11

输出 Nacos Config

一切就绪,我们通过Application方式启动项目,查看控制台打印内容如下所示:

Loading nacos data, dataId: 'alibaba-nacos-config-client.properties', group: 'DEFAULT_GROUP'Located property source: CompositePropertySource {name='NACOS', propertySources=[NacosPropertySource {name='alibaba-nacos-config-client.properties'}]}配置信息,名称:admin-properties,年龄:11

自动更新配置

在上面的步骤中我们已经可以从Nacos Config内读取到对应的properties配置文件内容信息。

那我们如果通过Nacos Console进行修改了配置内容后,我们的应用程序是不是可以立马获取到修改后的值呢?

我们带着这个疑问,去Nacos Console找到DATA-ID = alibaba-nacos-config-client.properties的配置信息,修改hengboy.age的值为25,重新发布配置信息后查看我们的应用程序的控制台输出内容如下所示:

Loading nacos data, dataId: 'alibaba-nacos-config-client.properties', group: 'DEFAULT_GROUP'Located property source: CompositePropertySource {name='NACOS', propertySources=[NacosPropertySource {name='alibaba-nacos-config-client.properties'}]}Refresh keys changed: [hengboy.age]配置信息,名称:admin-properties,年龄:25

可以看到输出的内容,我们修改完外部的配置信息后,Nacos Client会自动刷新所修改的配置文件内容,始终让配置内容保持与Nacos Config内配置一致。

我们通过Nacos Console修改的当前DATA-ID下的任何参数都会在控制台Refresh keys changed: [xxx,xxx]打印。

总结

本章简单的讲解了SpringCloud Alibaba的配置中心读取配置信息方式以及自动更新配置信息实现,在开头我们说了Nacos Config所支持的配置文件的格式不仅仅是properties这一种,不过这是默认的一种方式,在下一章我们来讲解下YAML方式的配置信息读取。

源码位置

SpringCloud Alibaba 整套源码:/hengboy/spring-cloud-chapter 点击查看本章源码

开源信息

MicroJob

micro-job是一款分布式任务调度执行框架,用于集群环境负载均衡条件下的任务分发以及任务消费

任务消费者节点定义任务 & 任务自动上报

任务调度器自动根据负载均衡策略来选择不同的消费者节点进行任务消费

[点击查看MicroJob官方文档](/#/)

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。