SpringCloud - 服务注册与配置中心Nacos使用详解4(配置中心1:基本用法)
我在之前的文章中介绍了 Nacos 作为注册中心时的使用方法。然而,Nacos 功能远远不止于此,本文起我将接着介绍 Nacos 作为配置中心在SpringCloud 中的使用。
(2)配置文件的内容如下(Group 为默认的 DEFAULT_GROUP,配置文件的格式选择 properties):
(5)可以发现读取的便是 hangge-client-dev.properties 这个配置文件的属性数据:
四、配置中心使用教程1:基本用法
1,新建配置
(1)首先我们启动 Nacos 服务,在“配置管理”->“配置列表”中新建一个配置:hangge-client.properties
配置的 Data ID 定义规则是:${prefix}-${spring.profile.active}.${file-extension}
- prefix 默认为 spring.application.name 的值,也可以通过配置项 spring.cloud.nacos.config.prefix 来配置。
- spring.profile.active 即为当前环境对应的 profile,可以通过配置项 spring.profile.active 来配置(注意:当 spring.profile.active 为空时,对应的连接符 - 也将不存在,Data ID 的拼接格式变成 ${prefix}.${file-extension})
- file-exetension 为配置内容的数据格式,可以通过配置项 spring.cloud.nacos.config.file-extension 来配置。目前只支持 properties 和 yaml 类型。
(2)配置文件的内容如下(Group 为默认的 DEFAULT_GROUP,配置文件的格式选择 properties):
from=default-2.0
(3)接着再创建一个配置文件 hangge-client-dev.properties,文件内容如下:
(2)这些依赖如果创建时候没有勾选,也可等创建完毕后手动编辑 pom.xml 文件进行添加:
(3)接着创建 bootstrap.properties 配置,来指定获取配置文件的地址和类型:
(4)最后我们创建一个 Controller 来测试一下,通过 @Value("${from}") 绑定配置服务中配置的 from 属性,并通过接口返回这个 from 属性:
(5)除了通过 @Value 注解绑定注入之外,我们也可以通过 Environment 对象类获取配置属性,下面代码的运行结果同上面是一样:
(4)而如果我们将项目的 spring.profiles.active 指定为 dev 时:
from=dev-2.0
2,客户端映射配置
(1)首先创建一个基础的 Spring Initializr 工程,命名为 hangge-client,并且创建时勾选上 Spring Web 以及 Nacos Configuration 依赖:
<properties> <java.version>1.8</java.version> <spring-cloud-alibaba.version>2.2.0.RELEASE</spring-cloud-alibaba.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId> </dependency> </dependencies> <dependencyManagement> <dependencies> <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>
(3)接着创建 bootstrap.properties 配置,来指定获取配置文件的地址和类型:
提示:Nacos 同 Spring Cloud Config 一样,在项目初始化时,要保证先从配置中心进行配置拉取,拉取配置之后,才能保证项目的正常启动。而 Spring Boot 中配置文件的加载是存在优先级顺序的,bootstrap 优先级高于 application
#为服务命名
spring.application.name=hangge-client
#指定配置中心的地址
spring.cloud.nacos.config.server-addr=192.168.60.133:8848
#指定配置中心中配置文件的格式(默认即为properties)
spring.cloud.nacos.config.file-extension=properties
(4)最后我们创建一个 Controller 来测试一下,通过 @Value("${from}") 绑定配置服务中配置的 from 属性,并通过接口返回这个 from 属性:
注意:这里加入了 @RefreshScope 注解,其作用是可以使当前类下的配置支持动态更新。
@RefreshScope @RestController public class HelloController { @Value("${from}") private String from; @GetMapping("/test") public String test(){ return this.from; } }
(5)除了通过 @Value 注解绑定注入之外,我们也可以通过 Environment 对象类获取配置属性,下面代码的运行结果同上面是一样:
@RefreshScope @RestController public class HelloController { @Autowired private Environment env; @GetMapping("/test") public String test(){ return env.getProperty("from", "undefined"); } }
3,开始测试
(1)启动 hangge-client 应用并访问 /test,可以看到页面成功输出配置文件中的内容:
(2)如果此时我们修改配置中心上的配置内容:
(3)由于客户端 Controller 添加了 @RefreshScope 注解使其支持动态更新,重新访问 /test 可以看到页面上显示的是最新的配置内容:
spring.profiles.active=dev
(5)可以发现读取的便是 hangge-client-dev.properties 这个配置文件的属性数据: