返回 导航

SpringBoot / Cloud

hangge.com

SpringCloud - 服务注册与配置中心Nacos使用详解4(配置中心1:基本用法)

作者:hangge | 2020-12-07 08:10
    我在之前的文章中介绍了 Nacos 作为注册中心时的使用方法。然而,Nacos 功能远远不止于此,本文起我将接着介绍 Nacos 作为配置中心在SpringCloud 中的使用。 

四、配置中心使用教程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,文件内容如下:
from=dev-2.0

2,客户端映射配置

(1)首先创建一个基础的 Spring Initializr 工程,命名为 hangge-client,并且创建时勾选上 Spring Web 以及 Nacos Configuration 依赖:

(2)这些依赖如果创建时候没有勾选,也可等创建完毕后手动编辑 pom.xml 文件进行添加:
<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 可以看到页面上显示的是最新的配置内容:

(4)而如果我们将项目的 spring.profiles.active 指定为 dev 时:
spring.profiles.active=dev

(5)可以发现读取的便是 hangge-client-dev.properties 这个配置文件的属性数据:
评论

全部评论(0)

回到顶部