JeecgBoot集成Nacos配置中心:从0到1实现配置动态管理

JeecgBoot集成Nacos配置中心:从0到1实现配置动态管理

【免费下载链接】JeecgBoot 🔥「企业级低代码平台」前后端分离架构SpringBoot 2.x/3.x,SpringCloud,Ant Design&Vue3,Mybatis,Shiro,JWT。强大的代码生成器让前后端代码一键生成,无需写任何代码! 引领新的开发模式OnlineCoding->代码生成->手工MERGE,帮助Java项目解决70%重复工作,让开发更关注业务,既能快速提高效率,帮助公司节省成本,同时又不失灵活性。 【免费下载链接】JeecgBoot 项目地址: https://gitcode.com/GitHub_Trending/je/JeecgBoot

你是否还在为分布式系统中的配置管理烦恼?频繁修改配置需要重启服务?不同环境配置混乱难以维护?JeecgBoot作为企业级低代码平台,通过集成Nacos(Naming and Configuration Service,动态服务发现、配置和服务管理平台)完美解决了这些问题。本文将带你从零开始,在JeecgBoot项目中集成Nacos配置中心,实现配置的动态更新与集中管理,让你彻底告别配置管理难题。读完本文,你将掌握Nacos环境搭建、JeecgBoot集成配置、动态配置使用以及高级功能应用等核心技能。

Nacos简介与环境准备

Nacos是阿里巴巴开源的一款优秀的动态服务发现、配置管理和服务管理平台,它可以帮助我们更灵活地管理微服务架构中的配置信息。相比传统的配置文件方式,Nacos具有配置集中管理、动态更新、多环境支持、配置版本控制等优势,非常适合在分布式系统中使用。

在JeecgBoot项目中,已经为我们准备好了Nacos相关的数据库脚本,我们可以直接使用。数据库脚本文件路径为:jeecg-boot/db/tables_nacos.sql。这个脚本文件包含了Nacos运行所需的表结构和初始数据,执行后可以为Nacos提供数据存储支持。

安装与启动Nacos

  1. 首先,我们需要从Nacos官网下载适合的Nacos版本。由于JeecgBoot项目的特性,建议选择稳定版本的Nacos,例如nacos-server-2.0.3。

  2. 下载完成后,解压安装包。

  3. 执行数据库脚本:使用数据库工具(如Navicat、DBeaver等)连接你的MySQL数据库,执行jeecg-boot/db/tables_nacos.sql脚本,创建Nacos所需的数据库和表。

  4. 修改Nacos配置:进入Nacos安装目录下的conf文件夹,编辑application.properties文件,修改数据库连接信息,使其指向你刚刚创建的Nacos数据库。

spring.datasource.platform=mysql
db.num=1
db.url.0=jdbc:mysql://localhost:3306/nacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
db.user=root
db.password=root
  1. 启动Nacos:

    • Windows系统:双击bin目录下的startup.cmd文件。
    • Linux/Mac系统:在终端中进入bin目录,执行sh startup.sh -m standalone命令( standalone表示单机模式启动,适合开发环境)。
  2. 访问Nacos控制台:打开浏览器,输入http://localhost:8848/nacos,使用默认用户名和密码(nacos/nacos)登录Nacos控制台。登录成功后,你将看到Nacos的管理界面,可以在这里进行配置的管理和维护。

JeecgBoot集成Nacos配置中心

添加Nacos依赖

JeecgBoot项目采用Maven进行依赖管理,我们需要在项目的pom.xml文件中添加Nacos相关的依赖。打开项目的pom.xml文件,添加以下依赖:

<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>

配置Nacos连接信息

在JeecgBoot项目中,配置文件是非常重要的部分。我们需要在配置文件中添加Nacos配置中心的连接信息,以便项目能够正确连接到Nacos服务器。

项目的配置文件通常位于jeecg-boot/jeecg-boot-base-core/src/main/resources/application.yml。在该文件中添加以下配置:

spring:
  cloud:
    nacos:
      config:
        server-addr: localhost:8848  # Nacos服务器地址
        file-extension: yaml  # 配置文件格式
        namespace:  # 命名空间,默认为public,可根据实际情况填写
        group: DEFAULT_GROUP  # 配置分组,默认为DEFAULT_GROUP

动态配置的使用

在Nacos控制台创建配置

  1. 登录Nacos控制台后,点击左侧菜单栏的“配置管理” -> “配置列表”。

  2. 点击“+”按钮,新增配置。

  3. 在新增配置页面,填写以下信息:

    • Data ID:配置的唯一标识,建议格式为${spring.application.name}-${profile}.${file-extension},例如jeecg-boot-dev.yaml
    • Group:配置分组,与项目配置文件中配置的group一致,这里填写DEFAULT_GROUP
    • 配置格式:选择YAML
    • 配置内容:填写具体的配置信息,例如数据库连接信息、Redis配置等。

jeecg-boot/db/tables_nacos.sql脚本中我们可以看到一些示例配置,例如:

spring:
  datasource:
    druid:
      stat-view-servlet:
        enabled: true
        loginUsername: admin
        loginPassword: 123456
        allow:
      web-stat-filter:
        enabled: true
    dynamic:
      druid:
        initial-size: 5
        min-idle: 5
        maxActive: 20
        maxWait: 60000
        timeBetweenEvictionRunsMillis: 60000
        minEvictableIdleTimeMillis: 300000
        validationQuery: SELECT 1 FROM DUAL
        testWhileIdle: true
        testOnBorrow: false
        testOnReturn: false
        poolPreparedStatements: true
        maxPoolPreparedStatementPerConnectionSize: 20
        filters: stat,wall,slf4j
        wall:
          selectWhereAlwayTrueCheck: false
        stat:
          merge-sql: true
          slow-sql-millis: 5000
      datasource:
        master:
          url: jdbc:mysql://jeecg-boot-mysql:3306/jeecg-boot?characterEncoding=UTF-8&useUnicode=true&useSSL=false&tinyInt1isBit=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai
          username: root
          password: root
          driver-class-name: com.mysql.cj.jdbc.Driver

我们可以参考这些示例配置,在Nacos控制台中创建我们自己的配置。

在JeecgBoot中获取配置

在JeecgBoot项目中,我们可以使用@Value注解或@ConfigurationProperties注解来获取Nacos配置中心的配置。

使用@Value注解
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class ConfigController {

    @Value("${spring.datasource.dynamic.datasource.master.username}")
    private String username;

    @GetMapping("/getUsername")
    public String getUsername() {
        return username;
    }
}
使用@ConfigurationProperties注解

首先,创建一个配置类:

import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

@Component
@ConfigurationProperties(prefix = "spring.datasource.dynamic.datasource.master")
public class DataSourceConfig {
    private String url;
    private String username;
    private String password;
    private String driverClassName;

    // 省略getter和setter方法
}

然后,在需要使用配置的地方注入该配置类:

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class DataSourceController {

    @Autowired
    private DataSourceConfig dataSourceConfig;

    @GetMapping("/getDataSourceUrl")
    public String getDataSourceUrl() {
        return dataSourceConfig.getUrl();
    }
}

动态刷新配置

Nacos配置中心支持配置的动态刷新,当我们在Nacos控制台修改配置后,JeecgBoot项目可以在不重启的情况下获取到最新的配置。要实现动态刷新,我们需要在需要动态刷新的类上添加@RefreshScope注解。

import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RefreshScope
public class DynamicConfigController {

    @Value("${jeecg.signatureSecret}")
    private String signatureSecret;

    @GetMapping("/getSignatureSecret")
    public String getSignatureSecret() {
        return signatureSecret;
    }
}

当我们在Nacos控制台修改jeecg.signatureSecret配置后,访问/getSignatureSecret接口,就可以获取到最新的配置值,无需重启项目。

高级功能应用

多环境配置

在实际开发中,我们通常会有开发环境、测试环境、生产环境等不同的环境,每个环境的配置可能不同。Nacos支持多环境配置,我们可以通过命名空间(Namespace)来实现。

  1. 在Nacos控制台创建命名空间:点击左侧菜单栏的“命名空间”,然后点击“新建命名空间”,输入命名空间名称(如dev、test、prod)和描述,创建不同环境的命名空间。

  2. 在不同的命名空间下创建对应的配置:在创建配置时,选择对应的命名空间,然后填写配置内容。

  3. 在JeecgBoot项目中指定命名空间:修改项目的配置文件jeecg-boot/jeecg-boot-base-core/src/main/resources/application.yml,添加namespace配置,指定当前项目使用的命名空间。

spring:
  cloud:
    nacos:
      config:
        server-addr: localhost:8848
        file-extension: yaml
        namespace: dev  # 指定为开发环境的命名空间ID
        group: DEFAULT_GROUP

配置分组

除了多环境配置,Nacos还支持配置分组(Group),可以将不同模块或功能的配置分到不同的组中,方便管理。在创建配置时,我们可以指定配置的分组,例如将数据库配置分到DB_GROUP,将Redis配置分到REDIS_GROUP等。

在JeecgBoot项目中获取不同分组的配置时,可以在@Value注解中指定分组:

@Value("${spring.redis.host:}")
@NacosValue(value = "${spring.redis.host:}", autoRefreshed = true)
private String redisHost;

或者在@ConfigurationProperties注解中指定:

@Component
@ConfigurationProperties(prefix = "spring.redis", group = "REDIS_GROUP")
public class RedisConfig {
    private String host;
    private int port;
    // 省略getter和setter方法
}

总结与展望

通过本文的介绍,我们详细了解了如何在JeecgBoot项目中集成Nacos配置中心,包括Nacos的安装与启动、JeecgBoot项目的依赖添加和配置、动态配置的使用以及多环境配置、配置分组等高级功能。通过集成Nacos,我们可以实现配置的集中管理和动态更新,提高了系统的灵活性和可维护性,告别了频繁重启服务的烦恼。

在未来的发展中,Nacos还将不断完善和优化,提供更多强大的功能。JeecgBoot也会持续与Nacos等优秀的开源项目进行整合,为开发者提供更好的开发体验。希望本文能够帮助你更好地在JeecgBoot项目中使用Nacos配置中心,提升开发效率。

如果你在使用过程中遇到任何问题,可以参考Nacos官方文档或JeecgBoot项目的官方文档,也可以在相关的社区和论坛中寻求帮助。祝你在JeecgBoot和Nacos的世界中开发愉快!

【免费下载链接】JeecgBoot 🔥「企业级低代码平台」前后端分离架构SpringBoot 2.x/3.x,SpringCloud,Ant Design&Vue3,Mybatis,Shiro,JWT。强大的代码生成器让前后端代码一键生成,无需写任何代码! 引领新的开发模式OnlineCoding->代码生成->手工MERGE,帮助Java项目解决70%重复工作,让开发更关注业务,既能快速提高效率,帮助公司节省成本,同时又不失灵活性。 【免费下载链接】JeecgBoot 项目地址: https://gitcode.com/GitHub_Trending/je/JeecgBoot

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值