Spring Cloud Alibaba : Nacos服务配置中心

承接上一篇学习内容: Maven改造成Spring Boot项目

 

一、Nacos安装

Nacos是Java编写的,需要本地有Java环境

下载地址:https://github.com/alibaba/nacos/releases

 

 我这里用的2.0.3

找位置解压,然后切换到它的bin目录,cmd,回车

  >>>>>  

 

黑窗口输入:startup.cmd -m standalone,回车

 启动成功

 访问http://127.0.0.1:8848/nacos,   用户名nacos,密码nacos

 

在nacos中创建配置文件

 

或者:

data-id的后缀与配置格式后缀相同

 

 

 

二、对上一篇改造成功的Spring Boot项目进一步添加Nacos的配置中心功能

2.1 在父工程hobby的pom中,引入spring cloud和nacos的包

<dependencies>
<!-- https://mvnrepository.com/artifact/org.projectlombok/lombok -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.10</version>
<scope>provided</scope>
</dependency>
<!-- nacos注册中心-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<!-- nacos配置中心-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
</dependencies>
<!-- 依赖版本号管理 -->
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Hoxton.SR4</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>2.2.1.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.62</version>
</dependency>
</dependencies>
</dependencyManagement>

这里,spring cloud和spring boot 与spring cloud alibaba的版本必须尽量适配,不然程序会报莫名其妙的错误

具体可以参考这里:https://github.com/alibaba/spring-cloud-alibaba/wiki/版本说明

   

 

 

2.2 将子工程hobby-admin的配置文件application.yml改名字为boostrap.yml并添加nacos配置(这里使用nacos中的yml后缀的配置文件,其实properties后缀的文件也是可以的)

server:
  port: 8287
spring:
  application:
    name: hobby-admin
  cloud:
    nacos:
      config:
        server-addr: 127.0.0.1:8848
        extension-configs[0]:
          data-id: hobby-admin.yml
          group: DEFAULT_GROUP
          refresh: true

 

 关于data-id,nacos官网有解释,可以参考:https://nacos.io/zh-cn/docs/quick-start-spring-cloud.html

在 Nacos Spring Cloud 中,dataId 的完整格式如下:

${prefix}-${spring.profiles.active}.${file-extension}
  • prefix 默认为 spring.application.name 的值,也可以通过配置项 spring.cloud.nacos.config.prefix来配置。
  • spring.profiles.active 即为当前环境对应的 profile,详情可以参考 Spring Boot文档。 注意:当 spring.profiles.active 为空时,对应的连接符 - 也将不存在,dataId 的拼接格式变成 ${prefix}.${file-extension}
  • file-exetension 为配置内容的数据格式,可以通过配置项 spring.cloud.nacos.config.file-extension 来配置。目前只支持 properties 和 yaml 类型。

 

2.3 在子工程hobby-admin中添加nacos的测试controller

package com.chaixy.hobby.admin.nacos;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RefreshScope
public class NacosConfigController {

    @Value("${hello}")
    private String hello;

    @RequestMapping("/hello")
    public String hello() {
        return hello;
    }
}

 

这里我们要读取nacos配置中心中hello的配置值. 注意通过 Spring Cloud 原生注解 @RefreshScope 实现配置自动更新:

 

2.4 启动hobby-admin,测试http://127.0.0.1:8287/hello,查看是否读取成功

 

 2.5 修改nacos中的配置值,再次读取,看能不能在不重启hobby-admin的情况下动态读配置

   >>>>>   

 

posted @ 2021-11-17 15:45  码界小小学生  阅读(81)  评论(0)    收藏  举报