SpringCloudAlibaba快速入门(2)基于Nacos构建分布式配置中心

写在前面的文章

快速入门

接下来通过一个简单的例子实现在 Nacos 中创建配置,在 SpringBoot 应用中加载 Nacos 配置并响应 Nacos 中的配置变化

创建配置

第一步:进入 Nacos 管理界面,选择 配置管理 \> 配置列表,点击右侧 + 号创建新配置
新建配置界面

重要的配置项说明:

  • DataId:使用 {项目名}.{配置格式} 的格式,本次填入 nacos-config-client.properties
  • Group:分组名,默认为 DEFAULT_GROUP,本次操作使用默认值
  • 配置格式:默认为 properties,本次操作使用默认值,如果要使用其它格式则需要在应用中进行相应地配置
  • 配置内容:填入 couse.title=nacos
创建应用

第一步:创建一个 SpringBoot 应用,命名为 nacos-config-client,保持跟上面的 DataId 一致
第二步:添加依赖

添加父依赖

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.0.5.RELEASE</version>
    <relativePath/>
</parent>

添加依赖管理器

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-dependencies</artifactId>
            <version>Finchley.SR1</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-alibaba-dependencies</artifactId>
            <version>0.2.2.RELEASE</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

添加依赖

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <!-- Nacos配置模块 -->
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
    </dependency>
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <optional>true</optional>
    </dependency>
</dependencies>

本例并没有添加对 Nacos 服务注册发现模块的依赖,配置功能跟服务注册发现功能是完全分立的,可以独立使用。

第三步:配置

配置服务名称及 Nacos 地址

server.port=8083
spring.application.name=nacos-config-client
spring.cloud.nacos.config.server-addr=127.0.0.1:8848

spring.application.name 配置成与 Nacos 中创建的 DataId 一致

第四步:创建启动类,并提供一个对外接口

@SpringBootApplication
public class Application {

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }

    @Slf4j
    @RestController
    @RefreshScope
    static class TestController {

        @Value("${couse.title}")
        private String title;

        @GetMapping("/test")
        public String hello() {
            return title;
        }
    }
}

接口实现很简单,就是输出配置文件中的 couse.title 的内容

  • @Value注解用于读取配置文件中的配置
  • @RefreshScope注解用于支持动态刷新配置内容,有了这个注解,在 Nacos 修改配置内容,@Value就会及时读取到最新的内容

第五步:启动应用
在启动日志最开始可以看到两行日志,说明已经成功从 Nacos 中加载配置,而且是在应用启动之前进行加载

Loading nacos data, dataId: 'nacos-config-client.properties', group: 'DEFAULT_GROUP'
Located property source: CompositePropertySource {name='NACOS', propertySources=[NacosPropertySource {name='nacos-config-client.properties'}]}
验证配置获取

访问接口 http://localhost:8083/test,如果一切正常,则会输出 Nacos 中配置的 nacos

验证配置动态更新

在 Nacos 管理后台修改配置内容为 couse.title=nacos changed,再次访问接口,可以看到输出的结果也会相应改变。

查看日志,可以看到配置被重新加载

Loading nacos data, dataId: 'nacos-config-client.properties', group: 'DEFAULT_GROUP'
Located property source: CompositePropertySource {name='NACOS', propertySources=[NacosPropertySource {name='nacos-config-client.properties'}]}
...
Refresh keys changed: [couse.title]

扩展

前面的例子要求 spring.application.name 配置成与 Nacos 中创建的 DataId 一致,只是为了采用默认配置,减少配置量。
通过自定义配置可以实现对任意名称的配置文件进行加载。

涉及配置项:

  • spring.cloud.nacos.config.prefix:配置文件前缀,如果没有配置,则默认使用 spring.application.name
  • spring.cloud.nacos.config.file-extension:配置文件后缀,默认为 properties
  • spring.cloud.nacos.config.group:配置文件分组,默认为 DEFAULT_GROUP

Nacos 采用 Group + DataId 进行配置文件定位,其中 DataId = {prefix}.{file-extension}

如下配置,则会加载 DEV_GROUP 分组下的 example.yaml 文件

spring.cloud.nacos.config.prefix=example
spring.cloud.nacos.config.file-extension=yaml
spring.cloud.nacos.config.group=DEV_GROUP
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值