Spring Cloud Alibaba 2022集成Nacos

📅 2026/7/15 6:04:13 👁️ 阅读次数 📝 编程学习
Spring Cloud Alibaba 2022集成Nacos

摘要:spring cloud alibaba2022版本分布式框架搭建示例之集成Nacos。

一、pom.xml文件新增依赖配置

父项目的pom.xml新增nacos注册中心与配置中心,截图如下,版本仍然是2022.0.0.0(因为2022.0.0.0版本的spring-cloud-alibaba-dependencies的jar里包含nacos的注册中心与配置中心的依赖包)。

<!-- Nacos注册中心 --> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> <version>${spring-cloud-alibaba.version}</version> </dependency> <!-- Nacos配置中心 --> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId> <version>${spring-cloud-alibaba.version}</version> </dependency>

子项目user-service里的pom.xml文件,添加nacos的注册中心与配置中心。

<!-- Nacos注册中心 --> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> </dependency> <!-- Nacos配置中心 --> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId> </dependency>

二、nacos里新建命名空间

新建一个dev命名空间,作为开发环境的配置。

三、子项目新建bootstrap.ym((删除原来application.yml文件)

bootstrap.yml文件

spring: application: name: order-service cloud: # 配置Nacos nacos: # 配置Nacos配置中心 config: server-addr: 127.0.0.1:8848 namespace: 2462763c-8aac-4783-ba62-030d43f95e52 file-extension: yml # 配置Nacos服务发现 discovery: server-addr: 127.0.0.1:8848 namespace: 2462763c-8aac-4783-ba62-030d43f95e52 config: import: - nacos:${spring.application.name}-${spring.profiles.active} logging: file: path: classpath:logback-spring.xml

四、启动类添加注解@EnableDiscoveryClient

package org.example; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.client.discovery.EnableDiscoveryClient; @SpringBootApplication @EnableDiscoveryClient // 启用服务发现客户端 public class GoodsServiceApplication { public static void main( String[] args ) { SpringApplication.run(UserServiceApplication.class, args); } }

成功启动运行类后如下。

2026-06-29 16:37:25.330 INFO 5624 --- [ main] c.a.c.n.refresh.NacosContextRefresher : [Nacos Config] Listening config: dataId=user-service, group=DEFAULT_GROUP 2026-06-29 16:37:25.958 INFO 5624 --- [RMI TCP Connection(1)-192.168.0.49] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring DispatcherServlet 'dispatcherServlet' 2026-06-29 16:37:25.961 INFO 5624 --- [RMI TCP Connection(1)-192.168.0.49] o.s.web.servlet.DispatcherServlet : Initializing Servlet 'dispatcherServlet' 2026-06-29 16:37:25.963 INFO 5624 --- [RMI TCP Connection(1)-192.168.0.49] o.s.web.servlet.DispatcherServlet : Completed initialization in 2 ms

五、查看nacos的服务列表是否注册成功

六、扩展——nacos动态参数的配置

说明:拿user-service项目做演示配置。

6.1、nacos新建配置文件

配置内容如下:

user: configKey: test-config3

6.2、新建一个配置管理类

package org.example.config; import lombok.Data; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.cloud.context.config.annotation.RefreshScope; import org.springframework.stereotype.Component; @Data @Component @RefreshScope // 支持配置刷新 @ConfigurationProperties(prefix = "user") // 使用prefix指定配置前缀,例如user.*将被注入到此类的属性中。 public class ApplicationConfigManager { private String configKey; }

6.3、启动类配置注解@EnableConfigurationProperties

package org.example; import org.example.config.ApplicationConfigManager; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.cloud.client.discovery.EnableDiscoveryClient; @SpringBootApplication @EnableDiscoveryClient // 启用服务发现客户端 @EnableConfigurationProperties(ApplicationConfigManager.class) //启用配置属性 public class GoodsServiceApplication { public static void main( String[] args ) { SpringApplication.run(UserServiceApplication.class, args); } }

6.4、验证动态值

6.4.1、DemoController的修改

package org.example.controller; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.example.config.ApplicationConfigManager; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @Slf4j @RestController @RequestMapping(value = "/demo") @AllArgsConstructor // 自动注入依赖 public class DemoController { private final ApplicationConfigManager applicationConfigManager; @GetMapping(value = "/getNacosConfigValue") public String test(){ log.info("测试获取nacos的动态配置"); return applicationConfigManager.getConfigKey(); } }

6.4.2、启动项目访问web接口变量的赋值

6.4.3、修改nacos配置文件的变量值

nacos的变量值修改保存后,服务有监听到之变有变更,日志如下:

6.4.4、访问web接口变量的赋值