Spring Cloud Alibaba 2022集成Nacos
📅 2026/7/15 6:04:13
👁️ 阅读次数
📝 编程学习
摘要: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-config36.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接口变量的赋值
编程学习
技术分享
实战经验