SpringBoot整合Nacos配置中心和注册中心 您所在的位置:网站首页 springboot整合nacos注册中心 SpringBoot整合Nacos配置中心和注册中心

SpringBoot整合Nacos配置中心和注册中心

2024-02-19 06:10| 来源: 网络整理| 查看: 265

一、背景

公司项目中使用的Nacos作为服务的注册中心和配置中心,但是呢公司的这一套Nacos是经过封装了的,而且封装的不是很友好,想着自己搭建一套标注的Nacos配置中心和服务中心

二、Nacos配置中心和注册中心搭建

2.1 依赖引入

com.alibaba.cloud spring-cloud-starter-alibaba-nacos-discovery 2021.0.5.0 com.alibaba.cloud spring-cloud-starter-alibaba-nacos-config 2021.0.5.0 org.springframework.cloud spring-cloud-starter-bootstrap 3.0.4

这里需要注意下SpringBoot的版本,不然jar包会有冲突,我这里使用的SpringBoot的版本是这个

org.springframework.boot spring-boot-starter-parent 2.6.13

 为什么要引入spring-cloud-starter-bootstrap的依赖呢?

答:因为在配置完Nacos注册中心和配置中心后,启动的时候报错如下错误,网上搜了一堆才找到回答。

SpringBoot和SpringCloud版本对应关系:版本说明 · alibaba/spring-cloud-alibaba Wiki · GitHub 

2.2 application.yml配置

server: port: 9999 spring: cloud: nacos: discovery: #nacos服务注册的配置 server-addr: 127.0.0.1:8848 register-enabled: true namespace: da8ba5de-6fd4-428c-9e64-7dcb38d28805 profiles: active: dev

2.3 bootstrap.properties配置

#nacos配置中心的相关配置 spring.cloud.nacos.config.file-extension=yaml spring.cloud.nacos.config.namespace=da8ba5de-6fd4-428c-9e64-7dcb38d28805 spring.cloud.nacos.config.server-addr=127.0.0.1:8848 spring.cloud.nacos.config.group=DEFAULT_GROUP #注意:应用的名称必须要在这里配置;不然在修改了Nacos配置之后,无法实时更新配置信息 spring.application.name=demo

2.4 启动入口加注解

加入@EnableDiscoveryClient注解

@EnableDiscoveryClient @SpringBootApplication(scanBasePackages = {"com.example"}) @MapperScan({"com.example.demo.mapper"}) public class DemoApplication { public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); } }

2.5 Nacos配置类

网上很多直接使用@Value注解的,但是在实际使用的过程中,发现@Value注解会导致更改了的配置不会实时刷新,所以最好是@RefreshScope和@ConfigurationProperties配合一起使用。

@RefreshScope @Data @Configuration @ConfigurationProperties(prefix = "demo") public class DemoPropertites { private String test; } @RestController @RequestMapping("/nacos") public class NacosController { @Resource private DemoPropertites demoPropertites; @RequestMapping("/config") public String getConfig(){ return demoPropertites.getTest(); } }

2.6  启动本地Nacos服务

2.6.1 本地Nacos服务下载

Releases · alibaba/nacos · GitHub

我这边使用的是nacos-server-2.2.2版本的,刚开始使用的是1.4.5版本,发现有问题

2.6.2 本地Nacos启动

直接参考官网的启动方式:https://github.com/alibaba/nacos 

2.7 本地Nacos访问

localhost:8848/nacos  账号:nacos 密码:nacos

 2.8 创建Nacos命名空间

如果不创建命名空间的话,默认使用的是pulic保留空间;我创建了一个dev的命名空间

2.9 创建配置文件

在dev命名空间下,创建demo.yaml配置文件;注意Data Id的命名,默认情况是${spring.application.name}.${spring.cloud.nacos.config.file-extension} ${spring.application.name}-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}

spring.application.name:应用的名称

spring.profiles.active:当前启动的环境

spring.cloud.nacos.config.file-extension:nacos配置文件的后缀,支持yaml和properties

 2.10 启动项目

启动完成后Nacos会监听如下三个文件,如果有改动,则会更新配置文件信息

 未修改配置前,nacos数据获取:

修改配置后,nacos数据获取:

服务注册:

3. Nacos多环境配置

主要有以下三个环境的配置文件

 

开发环境:bootstrap-dev.properties

spring.cloud.nacos.config.file-extension=yaml spring.cloud.nacos.config.namespace=da8ba5de-6fd4-428c-9e64-7dcb38d28805 spring.cloud.nacos.config.server-addr=127.0.0.1:8848 spring.cloud.nacos.config.group=DEFAULT_GROUP spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848 spring.cloud.nacos.discovery.register-enabled=true spring.cloud.nacos.discovery.namespace=da8ba5de-6fd4-428c-9e64-7dcb38d28805

测试环境:bootstrap-test.properties

spring.cloud.nacos.config.file-extension=yaml spring.cloud.nacos.config.namespace=52990b07-f6dd-4f24-b2e3-2523516d368b spring.cloud.nacos.config.server-addr=127.0.0.1:8848 spring.cloud.nacos.config.group=DEFAULT_GROUP spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848 spring.cloud.nacos.discovery.register-enabled=true spring.cloud.nacos.discovery.namespace=52990b07-f6dd-4f24-b2e3-2523516d368b

生产环境:bootstrap-pro.properties

spring.cloud.nacos.config.file-extension=yaml spring.cloud.nacos.config.namespace=4d73106d-10f7-4893-bd75-a8b12244304d spring.cloud.nacos.config.server-addr=127.0.0.1:8848 spring.cloud.nacos.config.group=DEFAULT_GROUP spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848 spring.cloud.nacos.discovery.register-enabled=true spring.cloud.nacos.discovery.namespace=4d73106d-10f7-4893-bd75-a8b12244304d



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有