欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 教育 > 锐评 > SpringBoot 3.2.4整合Nacos详细流程

SpringBoot 3.2.4整合Nacos详细流程

2025/5/1 17:49:00 来源:https://blog.csdn.net/weixin_44330810/article/details/145212678  浏览:    关键词:SpringBoot 3.2.4整合Nacos详细流程

1 引入依赖

<properties><spring-boot.version>3.2.4</spring-boot.version>
</properties>
<dependencies><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId></dependency><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId></dependency>
</dependencies>
<dependencyManagement><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-dependencies</artifactId><version>${spring-boot.version}</version><type>pom</type><scope>import</scope></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>${spring-cloud.version}</version><type>pom</type><scope>import</scope></dependency><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-alibaba-dependencies</artifactId><version>2023.0.1.0</version><type>pom</type><scope>import</scope></dependency></dependencies>
</dependencyManagement>

2 项目启动类新增注解 @EnableDiscoveryClient

@SpringBootApplication
@EnableDiscoveryClient
public class SbcPortalApplication {public static void main(String[] args) {SpringApplication.run(SbcPortalApplication.class, args);}}

3 resources 目录下只保留 bootstrap.yml

spring:application:name: ${app_name:${APP_NAME:sbc-portal}}
#  profiles:
#    active: ${profiles_active:${PROFILES_ACTIVE:stg}}main:allow-circular-references: truecloud:nacos:username: ${config_username:${CONFIG_USERNAME:nacos}}password: ${config_password:${CONFIG_PASSWORD:nacos}}discovery:server-addr: ${config_server_uri:${CONFIG_SERVER_URI:10.244.36.167:8848}}namespace: ${config_profiles_active:${CONFIG_PROFILES_ACTIVE:msdev4}}group: DEFAULT_GROUPservice: ${spring.application.name}config:server-addr: ${config_server_uri:${CONFIG_SERVER_URI:10.244.36.167:8848}}file-extension: ymlnamespace: ${config_profiles_active:${CONFIG_PROFILES_ACTIVE:msdev4}}group: DEFAULT_GROUP

4 登录 nacos 管理台 新增配置。用户名密码:nacos/nacos

在 Nacos 中,最常见且推荐的方式来区分不同环境的配置是通过 Data ID。然而,命名空间Group 也经常被用来辅助管理和组织配置。这三种方式各有其特点和适用场景,但 Data ID 是最直接且广泛使用的方法。

1. Data ID

data id 命名为 

${spring.application.name}-dev.yml 

${spring.application.name}-prod.yml 

可以根据不同环境创建不同的yml文件

在bootstrap.yml中通过 spring.profiles.active 指定

spring:profiles:active: ${profiles_active:${PROFILES_ACTIVE:stg}}

为什么是最常见的方法?

  • 灵活性高:每个环境可以拥有独立的 Data ID,如 your-service-name-dev.yamlyour-service-name-test.yaml 和 your-service-name-prod.yaml。这种方式与 Spring Boot 的多环境配置机制无缝配合。
  • 易于理解:开发者可以根据 Data ID 名称直观地判断配置所属的环境。
  • 便于维护:不同的 Data ID 可以分别管理,更新一个环境的配置不会影响其他环境。
示例
spring:application:name: your-service-name # 应用名称profiles:active: dev # 指定活动的profile,默认为dev,可以根据需要切换到其他环境cloud:nacos:config:server-addr: 10.244.36.167:8848 # Nacos Server 地址file-extension: yaml # 指定配置文件格式为YAML或properties

2. 命名空间 (Namespace)

data id 命名为 ${spring.application.name}.yml

何时使用?

  • 隔离性强:当您希望完全隔离不同环境的配置,避免任何可能的冲突时,可以为每个环境创建独立的命名空间。
  • 多租户支持:对于大型组织或多个团队共用一个 Nacos 实例的情况,命名空间可以作为逻辑上的“租户”来划分配置。
示例
  • 开发环境:dev
  • 测试环境:test
  • 生产环境:prod

在 Nacos 控制台中创建相应的命名空间,并确保应用程序根据当前环境选择正确的命名空间。

3. Group

何时使用?

  • 分类清晰:如果您有大量配置项并且希望按照业务模块或功能区域进行分类,可以使用 Group 来组织这些配置。
  • 简化管理:Group 可以帮助将配置项分组,使得管理和查找更加方便。
示例
  • COMMON_GROUP:存放通用配置,如数据库连接池设置、日志级别等。
  • SERVICE_GROUP:存放服务特定的配置,如 REST API 路径、第三方服务地址等。

综合建议

虽然 Data ID 是最常见的方式,但在实际应用中,通常会结合 命名空间Group 来达到最佳效果:

  • Data ID:用于区分不同环境的配置文件。
  • 命名空间:用于隔离不同环境或项目的配置,避免冲突。
  • Group:用于对配置项进行分类和管理,提高可读性和维护性。
最佳实践组合
  • 开发环境your-service-name-dev.yaml,命名空间 dev,Group DEFAULT_GROUP 或 DEV_GROUP
  • 测试环境your-service-name-test.yaml,命名空间 test,Group DEFAULT_GROUP 或 TEST_GROUP
  • 生产环境your-service-name-prod.yaml,命名空间 prod,Group DEFAULT_GROUP 或 PROD_GROUP

总结

  • 最常见的方式:Data ID 是最常见的区分不同环境的方法,因为它简单直接且易于理解和维护。
  • 综合使用:结合命名空间和 Group 可以提供更强大的配置管理和组织能力,满足复杂的业务需求。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词