当前位置: 首页 > article >正文

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: true
  cloud:
    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_GROUP
        service: ${spring.application.name}
      config:
        server-addr: ${config_server_uri:${CONFIG_SERVER_URI:10.244.36.167:8848}}
        file-extension: yml
        namespace: ${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 可以提供更强大的配置管理和组织能力,满足复杂的业务需求。


http://www.kler.cn/a/508193.html

相关文章:

  • Chrome谷歌浏览器如何能恢复到之前的旧版本
  • RPA编程实践:Electron简介
  • ubuntu开机自启某个应用
  • Java基础(一)
  • 【Git 】探索 Git 的魔法——git am 与补丁文件的故事
  • Mysql--实战篇--大数据量表的分页优化(自增长主键,子查询主键主查询全部,查询条件加索引,覆盖索引等)
  • Django中的QueryDict对象
  • Qiankun 微前端框架全面解析:架构、原理与最佳实践
  • ideal jdk报错如何解决
  • 鸿蒙UI(ArkUI-方舟UI框架)-开发布局
  • Web端实时播放RTSP视频流(监控)
  • oracle goldengate from mongodb to oracle的实时同步
  • Git 仓库 大文件管理
  • Kafka客户端-“远程主机强迫关闭了一个现有的连接”故障排查及解决
  • 闪豆多平台视频批量下载器
  • Git:标签管理
  • 【JAVA 基础 第(19)课】Hashtable 类用法和注意细节,是Map接口的实现类
  • 青少年编程与数学 02-007 PostgreSQL数据库应用 02课题、PostgreSQL数据库安装
  • “扣子”开发之四:与千帆AppBuilder比较
  • 冒泡排序 选择排序 插入排序
  • Scrapy中间件的使用
  • OpenCSG助力国产大模型|YuLan-Mini:数据高效的AI模型突破
  • Spring Boot框架总结(超级详细)
  • 程序设计:排版、检验报告的上下标解决几种办法
  • 与 Spring Boot 的无缝集成:ShardingSphere 快速集成实践
  • Elasticsearch(ES)与 MySQL 的对比分析及在 Spring Boot 中的使用