diff --git a/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/enums/DbTypeEnum.java b/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/enums/DbTypeEnum.java
new file mode 100644
index 000000000..65c1c317f
--- /dev/null
+++ b/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/enums/DbTypeEnum.java
@@ -0,0 +1,46 @@
+
+package cn.stylefeng.roses.kernel.rule.enums;
+
+import lombok.Getter;
+
+/**
+ * 不同数据库类型的枚举
+ *
+ * 用于标识mapping.xml中不同数据库的标识
+ *
+ * @author stylefeng
+ * @date 2020/6/20 21:08
+ */
+@Getter
+public enum DbTypeEnum {
+
+ /**
+ * mysql
+ */
+ MYSQL("mysql", "mysql"),
+
+ /**
+ * pgsql
+ */
+ PG_SQL("pgsql", "postgresql"),
+
+ /**
+ * oracle
+ */
+ ORACLE("oracle", "oracle"),
+
+ /**
+ * mssql
+ */
+ MS_SQL("mssql", "sqlserver");
+
+ private final String code;
+
+ private final String name;
+
+ DbTypeEnum(String code, String name) {
+ this.code = code;
+ this.name = name;
+ }
+
+}
diff --git a/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/util/DatabaseTypeUtil.java b/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/util/DatabaseTypeUtil.java
new file mode 100644
index 000000000..fc09f1310
--- /dev/null
+++ b/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/util/DatabaseTypeUtil.java
@@ -0,0 +1,60 @@
+/*
+ * Copyright [2020-2030] [https://www.stylefeng.cn]
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * Guns采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
+ *
+ * 1.请不要删除和修改根目录下的LICENSE文件。
+ * 2.请不要删除和修改Guns源码头部的版权声明。
+ * 3.请保留源码和相关描述文件的项目出处,作者声明等。
+ * 4.分发源码时候,请注明软件出处 https://gitee.com/stylefeng/guns
+ * 5.在修改包名,模块名称,项目代码等时,请注明软件出处 https://gitee.com/stylefeng/guns
+ * 6.若您的项目无法满足以上几点,可申请商业授权
+ */
+package cn.stylefeng.roses.kernel.rule.util;
+
+import cn.hutool.core.util.StrUtil;
+import cn.stylefeng.roses.kernel.rule.enums.DbTypeEnum;
+
+/**
+ * 判断数据库类型的工具
+ *
+ * @author fengshuonan
+ * @date 2021/3/27 21:24
+ */
+public class DatabaseTypeUtil {
+
+ /**
+ * 判断数据库类型
+ *
+ * @author fengshuonan
+ * @date 2021/3/27 21:25
+ */
+ public static DbTypeEnum getDbType(String jdbcUrl) {
+ if (StrUtil.isEmpty(jdbcUrl)) {
+ return DbTypeEnum.MYSQL;
+ }
+
+ if (jdbcUrl.contains(DbTypeEnum.ORACLE.getName())) {
+ return DbTypeEnum.ORACLE;
+ } else if (jdbcUrl.contains(DbTypeEnum.PG_SQL.getName())) {
+ return DbTypeEnum.PG_SQL;
+ } else if (jdbcUrl.contains(DbTypeEnum.MS_SQL.getName())) {
+ return DbTypeEnum.MS_SQL;
+ } else {
+ return DbTypeEnum.MYSQL;
+ }
+ }
+
+}
diff --git a/kernel-d-config/config-api/src/main/java/cn/stylefeng/roses/kernel/config/api/SysConfigDataApi.java b/kernel-d-config/config-api/src/main/java/cn/stylefeng/roses/kernel/config/api/SysConfigDataApi.java
new file mode 100644
index 000000000..d6e1f7f6f
--- /dev/null
+++ b/kernel-d-config/config-api/src/main/java/cn/stylefeng/roses/kernel/config/api/SysConfigDataApi.java
@@ -0,0 +1,35 @@
+package cn.stylefeng.roses.kernel.config.api;
+
+import cn.hutool.db.Entity;
+
+import java.sql.Connection;
+import java.sql.SQLException;
+import java.util.List;
+
+/**
+ * 系统配置元数据获取的api
+ *
+ * @author fengshuonan
+ * @date 2021/3/27 21:15
+ */
+public interface SysConfigDataApi {
+
+ /**
+ * 获取系统配置表中的所有数据
+ *
+ * @param conn 原始数据库连接
+ * @return 所有记录的list
+ * @author fengshuonan
+ * @date 2021/3/27 21:15
+ */
+ List getConfigs(Connection conn) throws SQLException;
+
+ /**
+ * 获取所有配置list的sql
+ *
+ * @author fengshuonan
+ * @date 2021/3/27 21:19
+ */
+ String getConfigListSql();
+
+}
diff --git a/kernel-d-config/config-business/src/main/java/cn/stylefeng/roses/kernel/config/modular/data/MysqlSysConfigData.java b/kernel-d-config/config-business/src/main/java/cn/stylefeng/roses/kernel/config/modular/data/MysqlSysConfigData.java
new file mode 100644
index 000000000..b7dc1bf61
--- /dev/null
+++ b/kernel-d-config/config-business/src/main/java/cn/stylefeng/roses/kernel/config/modular/data/MysqlSysConfigData.java
@@ -0,0 +1,34 @@
+package cn.stylefeng.roses.kernel.config.modular.data;
+
+import cn.hutool.db.Entity;
+import cn.hutool.db.handler.EntityListHandler;
+import cn.hutool.db.sql.SqlExecutor;
+import cn.stylefeng.roses.kernel.config.api.SysConfigDataApi;
+import cn.stylefeng.roses.kernel.rule.enums.StatusEnum;
+import cn.stylefeng.roses.kernel.rule.enums.YesOrNotEnum;
+import lombok.extern.slf4j.Slf4j;
+
+import java.sql.Connection;
+import java.sql.SQLException;
+import java.util.List;
+
+/**
+ * Mysql数据库的系统配置表获取
+ *
+ * @author fengshuonan
+ * @date 2021/3/27 21:18
+ */
+@Slf4j
+public class MysqlSysConfigData implements SysConfigDataApi {
+
+ @Override
+ public List getConfigs(Connection conn) throws SQLException {
+ return SqlExecutor.query(conn, getConfigListSql(), new EntityListHandler(), StatusEnum.ENABLE.getCode(), YesOrNotEnum.N.getCode());
+ }
+
+ @Override
+ public String getConfigListSql() {
+ return "select config_code, config_value from sys_config where status_flag = ? and del_flag = ?";
+ }
+
+}
diff --git a/kernel-d-config/config-business/src/main/java/cn/stylefeng/roses/kernel/config/modular/factory/SysConfigDataFactory.java b/kernel-d-config/config-business/src/main/java/cn/stylefeng/roses/kernel/config/modular/factory/SysConfigDataFactory.java
new file mode 100644
index 000000000..d5c674406
--- /dev/null
+++ b/kernel-d-config/config-business/src/main/java/cn/stylefeng/roses/kernel/config/modular/factory/SysConfigDataFactory.java
@@ -0,0 +1,36 @@
+package cn.stylefeng.roses.kernel.config.modular.factory;
+
+import cn.stylefeng.roses.kernel.config.api.SysConfigDataApi;
+import cn.stylefeng.roses.kernel.config.modular.data.MysqlSysConfigData;
+import cn.stylefeng.roses.kernel.rule.enums.DbTypeEnum;
+import cn.stylefeng.roses.kernel.rule.util.DatabaseTypeUtil;
+
+/**
+ * SysConfigDataApi的创建工厂
+ *
+ * @author fengshuonan
+ * @date 2021/3/27 21:27
+ */
+public class SysConfigDataFactory {
+
+ /**
+ * 通过jdbc url获取api
+ *
+ * @author fengshuonan
+ * @date 2021/3/27 21:27
+ */
+ public static SysConfigDataApi getSysConfigDataApi(String jdbcUrl) {
+ DbTypeEnum dbType = DatabaseTypeUtil.getDbType(jdbcUrl);
+ if (DbTypeEnum.MYSQL.equals(dbType)) {
+ return new MysqlSysConfigData();
+ } else if (DbTypeEnum.PG_SQL.equals(dbType)) {
+ // todo
+ } else if (DbTypeEnum.MS_SQL.equals(dbType)) {
+ // todo
+ } else if (DbTypeEnum.ORACLE.equals(dbType)) {
+ // todo
+ }
+ return new MysqlSysConfigData();
+ }
+
+}
diff --git a/kernel-d-config/config-business/src/main/java/cn/stylefeng/roses/kernel/config/modular/listener/ConfigInitListener.java b/kernel-d-config/config-business/src/main/java/cn/stylefeng/roses/kernel/config/modular/listener/ConfigInitListener.java
index 0881d62db..411435d38 100644
--- a/kernel-d-config/config-business/src/main/java/cn/stylefeng/roses/kernel/config/modular/listener/ConfigInitListener.java
+++ b/kernel-d-config/config-business/src/main/java/cn/stylefeng/roses/kernel/config/modular/listener/ConfigInitListener.java
@@ -27,14 +27,11 @@ package cn.stylefeng.roses.kernel.config.modular.listener;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.db.DbUtil;
import cn.hutool.db.Entity;
-import cn.hutool.db.handler.EntityListHandler;
-import cn.hutool.db.sql.SqlExecutor;
import cn.stylefeng.roses.kernel.config.ConfigContainer;
import cn.stylefeng.roses.kernel.config.api.context.ConfigContext;
import cn.stylefeng.roses.kernel.config.api.exception.ConfigException;
import cn.stylefeng.roses.kernel.config.api.exception.enums.ConfigExceptionEnum;
-import cn.stylefeng.roses.kernel.rule.enums.StatusEnum;
-import cn.stylefeng.roses.kernel.rule.enums.YesOrNotEnum;
+import cn.stylefeng.roses.kernel.config.modular.factory.SysConfigDataFactory;
import lombok.extern.slf4j.Slf4j;
import org.springframework.boot.context.event.ApplicationContextInitializedEvent;
import org.springframework.context.ApplicationListener;
@@ -62,8 +59,6 @@ import static cn.stylefeng.roses.kernel.config.api.exception.enums.ConfigExcepti
@Slf4j
public class ConfigInitListener implements ApplicationListener, Ordered {
- private static final String CONFIG_LIST_SQL = "select config_code, config_value from sys_config where status_flag = ? and del_flag = ?";
-
@Override
public int getOrder() {
return Ordered.HIGHEST_PRECEDENCE + 100;
@@ -87,6 +82,7 @@ public class ConfigInitListener implements ApplicationListener entityList = SqlExecutor.query(conn, CONFIG_LIST_SQL, new EntityListHandler(), StatusEnum.ENABLE.getCode(), YesOrNotEnum.N.getCode());
+ List entityList = SysConfigDataFactory.getSysConfigDataApi(dataSourceUrl).getConfigs(conn);
// 将查询到的参数配置添加到缓存
if (ObjectUtil.isNotEmpty(entityList)) {
@@ -117,4 +113,5 @@ public class ConfigInitListener implements ApplicationListener