第五节 SpringCloud集成nacos

亮子 2021-08-16 22:14:47 17502 0 0 0

1、运行nacos

startup.cmd -m standalone

2、添加依赖

nacos和SpringCloud的版本对应是一个很大的问题。在这里是SpringBoot的2.2.2.RELEASE版本和nacos的2.2.2.RELEASE版本对应。

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.2.2.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.shenmazong</groupId>
    <artifactId>demo-nacos-config-0816</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>demo-nacos-config-0816</name>
    <description>Demo project for Spring Boot</description>
    <properties>
        <java.version>1.8</java.version>
    </properties>
    <dependencies>
        <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-config</artifactId>
            <version>2.2.2.RELEASE</version>
        </dependency>

        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <version>2.5.3</version>
                <configuration>
                    <excludes>
                        <exclude>
                            <groupId>org.projectlombok</groupId>
                            <artifactId>lombok</artifactId>
                        </exclude>
                    </excludes>
                </configuration>
            </plugin>
        </plugins>
    </build>

</project>

3、添加nacos配置

server:
    port: 9090

classname:
    label: 1901A
  • 内容

图片alt

  • 命名空间

图片alt

4、修改配置名字

application.properties 修改为 bootstrap.properties,并添加如下内容:

# 服务信息
spring.application.name=demo-nacos-config-0816
server.port=9001

# nacos配置
spring.cloud.nacos.config.server-addr=127.0.0.1:8848
spring.cloud.nacos.config.file-extension=yaml
spring.cloud.nacos.config.group=DEFAULT_GROUP

修改配置文件名字后,可能IDEA还不能识别,需要按照下图的步骤,进行设置即可:

图片alt

  • 说明

之所以需要配置 spring.application.name ,是因为它是构成 Nacos 配置管理 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 Boot文档。 注意:当 spring.profiles.active 为空时,对应的连接符 - 也将不存在,dataId 的拼接格式变成 ${prefix}.${file-extension}
  • file-exetension 为配置内容的数据格式,可以通过配置项 spring.cloud.nacos.config.file-extension 来配置。目前只支持 properties 和 yaml 类型。

5、配置自动更新

通过 Spring Cloud 原生注解 @RefreshScope 实现配置自动更新:

package com.shenmazong.demonacosconfig0816.config;

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;

/**
 * @author 军哥
 * @version 1.0
 * @description: 测试配置自动刷新
 * @date 2021/8/16 22:06
 */

@RestController
@RequestMapping("/config")
@RefreshScope
public class ConfigController {

    @Value("${classname.label:1812A}")
    private String classname;

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

5、运行效果

图片alt

图片alt

参考文章