SpringAlibabaCloud项目在nacos配置中心读取文件

SpringAlibabaCloud组件中nacos不仅是注册中心也是配置中心,方便配置统一管理。

命名空间概念

  • 命名空间用来隔离不同环境下的配置文件,在Nacos中配置了命名空间后,需要指定命名空间后才能拉取到该命名空间下的配置文件。
  • 我在本地开发,新建开发环境的命名空间
    在这里插入图片描述

创建配置文件

  • 在nacos中dev命名空间创建配置文件
    在这里插入图片描述
  • 配置一个字符串用于测试
user:
    learn: "用户服务配置"

在这里插入图片描述

  • 创建一个为user-server-biz-dev.yaml的配置,使用的是YAML格式。

  • Data ID : 配置的文件的名字,在拉取配置文件的时候需要指定Data ID。

  • Group : 分组,默认是 DEFAULT_GROUP , 可以针对不同的项目指定不同的配置组。

项目导入依赖以及配置

<build>
        <!-- 如果不设置resource 会导致application.yaml中的@@找不到pom文件中的配置-->
        <resources>
            <resource>
                <directory>src/main/resources</directory>
                <filtering>true</filtering>
            </resource>
        </resources>
    </build>
    <dependencies>
        <!-- 配置中心依赖-->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
        </dependency>
        <!--web 依赖-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <!--nacos依赖-->
        <dependency>
            <groupId>com.alibaba.cloud </groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>
    </dependencies>


    <profiles>
        <profile>
            <id>dev</id>
            <properties>
                <!-- 环境标识,需要与配置文件的名称相对应 -->
                <profiles.active>dev</profiles.active>
            </properties>
            <activation>
                <!-- 默认环境 -->
                <activeByDefault>true</activeByDefault>
            </activation>
        </profile>
        <profile>
            <id>test</id>
            <properties>
                <profiles.active>test</profiles.active>
            </properties>
        </profile>
        <profile>
            <id>prod</id>
            <properties>
                <profiles.active>prod</profiles.active>
            </properties>
        </profile>
    </profiles>
  • 配置文件加入配置
server:
  port: 8001
spring:
  profiles:
    active: @profiles.active@ #启用的环境
  application:
    name: @artifactId@
  cloud:
    nacos:
      discovery:
        server-addr: ${NACOS_HOST:ruyi-register}:${NACOS_PORT:8848}  #nacos的地址
      config:
        server-addr: ${spring.cloud.nacos.discovery.server-addr} #配置中心的地址
        file-extension: yaml #文件格式
        prefix: @artifactId@-@profiles.active@ #前缀 user-server-biz-dev
        group: DEFAULT_GROUP #默认分组
        namespace: c6835035-f1d6-48f6-a802-96e72114cbf9 #使用指定命名空间的配置文件

写个方法测试

@RestController
@RequestMapping("/user")
public class UserController {

    @Value("${user.learn}")
    private String param;

    /**
     * 测试读取配置中心字符
     */
    @GetMapping("/learn")
    public void loadFile() {
        System.out.println("配置中心读取的字符串:" + param);

    }
}

读取成功


版权声明:本文为weixin_45528650原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。