nacos(1.X) 配置管理

118 阅读1分钟

创建Nacos配置管理

登录nacos,从左侧菜单找到命名空间

image.png

默认情况下只有一个public,我们可以添加一个dev用于管理开发环境的配置

image.png

注意命名空间ID是用于在spring boot里面配置命名空间使用,不写的会自动生成一串,最好填一下 完成后,就能在配置管理里面看到另一个命名空间了

image.png

点击右边+新建一个配置文件

image.png

Data ID 跟你项目的spring.application.name一致

image.png

Spring boot 项目开发部分

开发项目,获取配置项

新建一个项目,在pom里面添加依赖管理

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-parent</artifactId>
            <version>2.3.2.RELEASE</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-alibaba-dependencies</artifactId>
            <version>2.2.5.RELEASE</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-dependencies</artifactId>
            <version>Hoxton.SR8</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

添加依赖

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter</artifactId>
    </dependency>
    <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-discovery</artifactId>
    </dependency>
    <dependency>
        <groupId>com.alibaba.cloud</groupId>
        <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
    </dependency>
</dependencies>

新建一个bootstrap.properties用于配置nacos的参数

spring.cloud.nacos.server-addr=127.0.0.1:8848
spring.cloud.nacos.username=nacos
spring.cloud.nacos.password=nacos
#配置命名空间
spring.cloud.nacos.config.namespace=dev
#假如你刚刚创建的配置文件里面的group不是DEFAULT_GROUP,则需要配置下面的参数
#spring.cloud.nacos.config.group=
#如果你在nacos创建配置文件后缀不是properties,则需要在下面的配置指定文件后缀
spring.cloud.nacos.config.file-extension=

新建一个application.properties

server.port=8011
#下面的名字与nacos上配置的Data ID 一致
spring.application.name=test-properties

新建一个controller,用于打印测试配置项

@RestController
@RequestMapping("/test")
public class TestController {

    @Value("${test.user.name}")
    private String userName;

    @GetMapping("/")
    public void test() {
        System.out.println(userName);
    }
}

定义启动类

@SpringBootApplication  
public class TestApplication {  
  
    public static void main(String[] args) {  
        SpringApplication.*run*(TestApplication.class, args);  
    }  
}

目录结构如下

image.png

点开http://127.0.0.1:8011/test/测试后,能够看到控制台输出了配置项的内容

image.png

指定公共部分的配置文件

有些配置文件每个服务都一样,不需要经常变动的可以提出来做成公共的配置文件

创建一个名为common的配置文件

image.png

bootstrap.properties加上下面的配置项

spring.cloud.nacos.config.extension-configs[0].data-id=common
#如果group不是DEFAULT_GROUP,则需要下面的属性去指定
spring.cloud.nacos.config.extension-configs[0].group=

修改TestController ,打印出测试的配置项

@RestController
@RequestMapping("/test")
public class TestController {

    @Value("${test.user.name}")
    private String userName;

    @Value("${test.commmon.msg}")
    private String commonMsg;

    @GetMapping("/")
    public void test() {
        System.out.println(userName);
        System.out.println(commonMsg);
    }
}

点开http://127.0.0.1:8011/test/测试后,能够看到控制台输出了配置项的内容

image.png

使用spring.profiles.active来区分环境

修改application.properties spring.profiles.active=test

在nacos上创建配置,data id 为{spring.application.name}-{ spring.profiles.active }.{你配置文件的拓展名}

image.png

再次调用http://127.0.0.1:8011/test/就能看到属性被替换

image.png