JeecgBoot集成Nacos配置中心:从0到1实现配置动态管理
你是否还在为分布式系统中的配置管理烦恼?频繁修改配置需要重启服务?不同环境配置混乱难以维护?JeecgBoot作为企业级低代码平台,通过集成Nacos(Naming and Configuration Service,动态服务发现、配置和服务管理平台)完美解决了这些问题。本文将带你从零开始,在JeecgBoot项目中集成Nacos配置中心,实现配置的动态更新与集中管理,让你彻底告别配置管理难题。读完本文,你将掌握Nacos环境搭建、JeecgBoot集成配置、动态配置使用以及高级功能应用等核心技能。
Nacos简介与环境准备
Nacos是阿里巴巴开源的一款优秀的动态服务发现、配置管理和服务管理平台,它可以帮助我们更灵活地管理微服务架构中的配置信息。相比传统的配置文件方式,Nacos具有配置集中管理、动态更新、多环境支持、配置版本控制等优势,非常适合在分布式系统中使用。
在JeecgBoot项目中,已经为我们准备好了Nacos相关的数据库脚本,我们可以直接使用。数据库脚本文件路径为:jeecg-boot/db/tables_nacos.sql。这个脚本文件包含了Nacos运行所需的表结构和初始数据,执行后可以为Nacos提供数据存储支持。
安装与启动Nacos
-
首先,我们需要从Nacos官网下载适合的Nacos版本。由于JeecgBoot项目的特性,建议选择稳定版本的Nacos,例如nacos-server-2.0.3。
-
下载完成后,解压安装包。
-
执行数据库脚本:使用数据库工具(如Navicat、DBeaver等)连接你的MySQL数据库,执行jeecg-boot/db/tables_nacos.sql脚本,创建Nacos所需的数据库和表。
-
修改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
-
启动Nacos:
- Windows系统:双击bin目录下的startup.cmd文件。
- Linux/Mac系统:在终端中进入bin目录,执行
sh startup.sh -m standalone命令( standalone表示单机模式启动,适合开发环境)。
-
访问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控制台创建配置
-
登录Nacos控制台后,点击左侧菜单栏的“配置管理” -> “配置列表”。
-
点击“+”按钮,新增配置。
-
在新增配置页面,填写以下信息:
- Data ID:配置的唯一标识,建议格式为
${spring.application.name}-${profile}.${file-extension},例如jeecg-boot-dev.yaml。 - Group:配置分组,与项目配置文件中配置的group一致,这里填写
DEFAULT_GROUP。 - 配置格式:选择
YAML。 - 配置内容:填写具体的配置信息,例如数据库连接信息、Redis配置等。
- Data ID:配置的唯一标识,建议格式为
从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)来实现。
-
在Nacos控制台创建命名空间:点击左侧菜单栏的“命名空间”,然后点击“新建命名空间”,输入命名空间名称(如dev、test、prod)和描述,创建不同环境的命名空间。
-
在不同的命名空间下创建对应的配置:在创建配置时,选择对应的命名空间,然后填写配置内容。
-
在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的世界中开发愉快!
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



