nacos集成springcloud实现配置中心功能

1. 在nacos控制台创建namespace

nacos集成springcloud实现配置中心功能_第1张图片

2. 创建SpringCloud项目

大家注意springboot和springcloud的版本对应,可以去官网查看。

https://spring.io/projects/spring-cloud#learnnacos集成springcloud实现配置中心功能_第2张图片

<properties>
        <java.version>11java.version>
        <poi.version>5.2.3poi.version>
        <easyexcel.version>3.2.1easyexcel.version>
        <mybatis-plus.version>3.5.3.1mybatis-plus.version>
        <hutool.version>5.8.15hutool.version>
        <flowable.version>6.8.0flowable.version>
        <poi.version>5.2.3poi.version>
        <easyexcel.version>3.2.1easyexcel.version>
        <spring-cloud.version>2021.0.7spring-cloud.version>
    properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.cloudgroupId>
            <artifactId>spring-cloud-starterartifactId>
        dependency>
        <dependency>
            <groupId>org.springframework.cloudgroupId>
            <artifactId>spring-cloud-starter-openfeignartifactId>
        dependency>
        <dependency>
            <groupId>org.springframework.cloudgroupId>
            <artifactId>spring-cloud-starter-loadbalancerartifactId>
        dependency>
     <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloudgroupId>
                <artifactId>spring-cloud-dependenciesartifactId>
                <version>${spring-cloud.version}version>
                <type>pomtype>
                <scope>importscope>
            dependency>
        dependencies>
    dependencyManagement>

3. 整合nacos依赖

   
        <dependency>
            <groupId>com.alibaba.cloudgroupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-configartifactId>
            <version>2021.1version>
        dependency>
        
        <dependency>
            <groupId>org.springframework.cloudgroupId>
            <artifactId>spring-cloud-starter-bootstrapartifactId>
        dependency>

4. nacos 配置

在nacos控制台添加配置列表:
nacos集成springcloud实现配置中心功能_第3张图片
我添加了两个配置列表,一个项目的私有配置,一个是公共配置(多项目共享)。

5. bootstrap.yml配置

在项目中创建bootstrap.yml文件,并配置Nacos服务地址以及namespace(没有就不需要配置):

spring:
  application:
    name: nacos-config-client
  cloud:
    nacos:
      config:
        server-addr: 127.0.0.1:8848
        namespace: 68468122-8955-45ee-a5b7-3d87972325b1

6. 配置dataId

有两种配置方式,一种是官方自动构建dataId ,另一种是指定dataId。

自动配置 dataId

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

${prefix}-${spring.profiles.active}.${file-extension}

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

比如项目名称为nacos-config-client,当前环境为test,格式文件为properties,那就需要新建一个dataId为nacos-config-client.properties配置。

手动设置 dataId

在NacosConfigProperties类里面name字段就是配置dataId:

public class NacosConfigProperties {
  /**
	 * nacos config dataId name.
	 */
	private String name;
  //省略其他配置
}

7. 获取数据

通过@Value就能获取配置文件的数据:

@Component
@RefreshScope
public class TestConfig {

    @Value(value = "${user.name:null}")
    private String test;

    public String getTest(){
        return test;
    }

要实现配置的自动更新,需要添加Spring Cloud原生注解 @RefreshScope。controller直接调用即可:

@RestController
public class TestController {

    @Autowired
    private TestConfig testConfig;

    @GetMapping("/config")
    public String testConfig(){
        String config = testConfig.getTest();
        return config;
    }
}

8. 扩展配置和共享配置

开发中,有时候会出现多个模块可能会有很多共用的配置,比如数据库连接信息,Redis 连接信息,RabbitMQ 连接信息,监控配置等等。那么此时,我们就希望可以加载多个配置,多个项目共享同一个配置之类等功能,Nacos Config 也确实支持。

  • Nacos在配置路径spring.cloud.nacos.config.extension-configs下,允许我们指定⼀个或多个额外配置。

  • Nacos在配置路径spring.cloud.nacos.config.shared-configs下,允许我们指定⼀个或多个共享配置。

上述两类配置都⽀持三个属性:data-idgroup(默认为字符串DEFAULT_GROUP)、refresh(默认为true)。

spring:
  application:
    name: xxxxx-api
  profiles:
    active: dev
  cloud:
    nacos:
      config:
        server-addr: 127.0.0.1:8848
        file-extension: yml
        namespace: c38b64d5-02e3-49d8-9b4f-a139d6970ccc
        ## 公共配置
        shared-configs:
          - data-id: application.yml
            group: DEFAULT_GROUP
       # 常规配置文件
        # 优先级大于 shared-configs,在 shared-configs 之后加载
        extension-configs:
          - data-id: nacos-config-advanced.yaml
            group: SPRING_CLOUD_EXAMPLE_GROUP
            refresh: true

          - data-id: nacos-config-base.yaml
            group: SPRING_CLOUD_EXAMPLE_GROUP
            refresh: true
  • data-id : Data Id
  • group:自定义 Data Id 所在的组,不明确配置的话,默认是 DEFAULT_GROUP。
  • refresh: 控制该 Data Id 在配置变更时,是否支持应用中可动态刷新, 感知到最新的配置值。默认是不支持的

注意:这里的Data ID后面是加.yaml后缀的,且不需要指定file-extension。

你可能感兴趣的:(后台,spring,cloud,java,微服务)