nacos(1.4.1)客户端使用以及相关配置

nacos客户端使用gitee地址

1.目录结构

nacos mysql 配置加密 nacos配置设置密码_spring cloud

2.nacos服务端添加配置

默认用户名:nacos

默认密码:nacos

2.1添加命名空间

nacos mysql 配置加密 nacos配置设置密码_nacos mysql 配置加密_02

nacos mysql 配置加密 nacos配置设置密码_spring cloud_03

2.2根据服务名添加配置文件

注意:配置名称必须要加后缀 如bootstrap.yaml

nacos mysql 配置加密 nacos配置设置密码_nacos mysql 配置加密_04

3.工程maven依赖

父工程maven

<parent>
        <artifactId>spring-boot-starter-parent</artifactId>
        <groupId>org.springframework.boot</groupId>
        <version>2.1.13.RELEASE</version>
    </parent>

    <dependencyManagement>
        <dependencies>
            <!-- Spring Dependencies -->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-dependencies</artifactId>
                <version>2.1.13.RELEASE</version>
                <scope>import</scope>
                <type>pom</type>
            </dependency>

            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>Greenwich.SR6</version>
                <scope>import</scope>
                <type>pom</type>
            </dependency>

            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-alibaba-dependencies</artifactId>
                <version>2.1.4.RELEASE</version>
                <scope>import</scope>
                <type>pom</type>
            </dependency>
        </dependencies>
    </dependencyManagement>

子工程maven

<dependencies>
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
        </dependency>
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
    </dependencies>

4.配置文件(配置中心使用的配置文件名必须是bootstrap)

bootstrap.yaml

spring:
  application:
    name: config-nacos
  cloud:
    nacos:
      config:
        # nacos命名空间 不配置默认:public
        namespace: 44973184-6499-41e8-96df-df48e2e8cf7c 
        # nacos客户端默认扩展名是properties,如果不进行配置是没有办法读到服务端为yaml的
        file-extension: yaml
        # 进行同一命名空间,设置不同的分组,(可以以项目名做分组),不配置默认:DEFAULT_GROUP
        #group: qianjing
        # 一般存储不会发生变化的配置文件,是个集合(则配置在后面的,优先级高于前面的。即:几个元素下标越大,优先级越大)
      server-addr: 192.168.153.199:8848 # nacos服务器
      username: nacos
      password: nacos

当存在一些经常变动的配置时,可以添加spring.cloud.nacos.config.shared-configs、spring.cloud.nacos.config.extension-configs进行配置,我个人喜欢写在同一个配置中

例如:****

spring:
  application:
    name: config-nacos
  cloud:
    nacos:
      config:
        namespace: 44973184-6499-41e8-96df-df48e2e8cf7c
        # nacos客户端默认扩展名是properties,如果不进行配置是没有办法读到服务端为yaml的
        file-extension: yaml
        # 进行同一命名空间,设置不同的分组
        #group: qianjing
        # 一般存储不会发生变化的配置文件,是个集合(则配置在后面的,优先级高于前面的。即:几个元素下标越大,优先级越大)
        shared-configs:
          - data-id: config-common.properties
            # 配置文件发生变化,通知nacos客户端,true表示变化通知
            refresh: true
            # 默认分组可以不用写
            #group: default-group
        # 一般存储不会发生变化的配置文件,是个集合(则配置在后面的,优先级高于前面的。即:几个元素下标越大,优先级越大)
        extension-configs[0]:
          data-id: config-extension.properties
          refresh: true
          #group: default-group
      server-addr: 192.168.153.199:8848
      username: nacos
      password: nacos

5.controller层接口

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

@RestController
@RefreshScope //用于动态感知配置user.name改变的注解,让我们的数据实时更新
public class ConfigController {

    @Value("${user.name}")
    private String username;
    
    @GetMapping("/demo")
    public String username() {
        return username;
    }

}

6.启动类

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class ConfigApplication {

    public static void main(String[] args) {
        SpringApplication.run(ConfigApplication.class , args);
    }
}

7.启动项目测试

1.nacos注册成功

nacos mysql 配置加密 nacos配置设置密码_spring_05

2.实时更新测试(不用重启项目)

更新前

nacos mysql 配置加密 nacos配置设置密码_nacos mysql 配置加密_06

更新后

修改config-nacos.yaml配置里面的user.name = config.nacos.yaml

nacos mysql 配置加密 nacos配置设置密码_spring_07

注意:接口类有注解@RefreshScope