SpringBoot接入Nacos配置中心

一、启动Nacos服务端

前提条件

为什么要接入配置中心:因为传统的项目里修改一些配置需要经过重新部署服务这个过程,而统一配置中心则避免服务重启就能读取到最新的配置修改或更新内容!!!将一些可能会修改的配置放在配置中心,省时省力。

先下载 Nacos 并启动 Nacos server。操作步骤参见 Nacos 快速入门。
快速入门:https://nacos.io/zh-cn/docs/quick-start.html
Nacos官方文档:https://nacos.io/zh-cn/index.html
代码克隆:git clone [email protected]:BillDavidup/study-api.git
开发分支:DN-20220801.accessToNacos

二、Nacos配置命名空间和热配置

启动Nacos服务端后,进Nacos配置页面 http://127.0.0.1:8848/nacos
输入用户名和密码nacos
进入首页长这么样子:
SpringBoot接入Nacos配置中心_第1张图片
新建命名空间:
SpringBoot接入Nacos配置中心_第2张图片
在命名空间上新建配置项:
SpringBoot接入Nacos配置中心_第3张图片
配置项study-api.yml的内容如下,因为是YAML格式的配置

myNacos:
    demo: "558"

配置完一个配置是这样的:
SpringBoot接入Nacos配置中心_第4张图片
记录下namespacedataId、group信息,后面spring boot项目接入需要

三、接入步骤

3.1 pom.xml文件引入jar

        <dependency>
            <groupId>com.alibaba.boot</groupId>
            <artifactId>nacos-config-spring-boot-starter</artifactId>
            <version>0.2.12</version>
        </dependency>

3.2 启动类加注接@NacosPropertySource()

@SpringBootApplication
@NacosPropertySource(dataId = "study-api.yml", autoRefreshed = true, type = ConfigType.YAML)
@ComponentScan(basePackages = "com.dening.study.api")
public class StudyApiWebApplication {
    public static void main(String[] args) {
        SpringApplication.run(StudyApiWebApplication.class, args);
    }
}

dataId后面指定服务加载的热更新配置文件名称 study-api.yml,该文件在nacos页面配置,里面存放的就是配置项

3.3 配置application.yml文件

nacos:
  config:
    server-addr: 127.0.0.1:8848
    namespace: 5660da82-1be1-4ee5-a25c-1d133e6465a5

namespace是nacos页面配置的随机一串命名空间字符

3.4 在Service中注入配置

@Service
public class NacosDemoServiceImpl implements NacosDemoService {
    @NacosValue(value = "${myNacos.demo:899}", autoRefreshed = true)
    String myNacosDemo = "";

    public String getDemoNacosParam() {
        return myNacosDemo;
    }
}

@NacosValue()放在赋值字段myNacosDemo上面

四、nacos配置关键词解释

  • 常用方式一
    namespace: 命名空间用来区分环境,开发、测试、预发、生产等环境(名称带上环境标识)
    group: 区分同组不同的项目/系统同项目不同模块
    dataId: 一个独立的配置文件
  • 常用方式二
    namespace: 命名空间用来区分项目
    group: 区分不同的项目/系统同项目不同模块,可以采用group进行软隔离,格式用该模块的artifactId
    dataId: 一个独立的配置文件,区分环境(需要根据激活的环境去动态拼接dataId)

你可能感兴趣的:(最佳实践,spring,boot,java,spring)