添加了设置从绝对路径加载数据库配置文件的功能(特殊情况使用,比如写Minecraft插件的时候)

This commit is contained in:
NekokeCore 2022-04-13 23:10:57 +08:00
parent fa0395c607
commit 2a123d7b95
No known key found for this signature in database
GPG Key ID: E6579AE0BB9771BA
2 changed files with 50 additions and 14 deletions

View File

@ -4,6 +4,7 @@ import cn.hutool.core.convert.Convert;
import cn.hutool.core.io.IoUtil; import cn.hutool.core.io.IoUtil;
import cn.hutool.db.dialect.Dialect; import cn.hutool.db.dialect.Dialect;
import cn.hutool.db.dialect.DialectFactory; import cn.hutool.db.dialect.DialectFactory;
import cn.hutool.db.ds.AbstractDSFactory;
import cn.hutool.db.ds.DSFactory; import cn.hutool.db.ds.DSFactory;
import cn.hutool.db.sql.SqlLog; import cn.hutool.db.sql.SqlLog;
import cn.hutool.log.Log; import cn.hutool.log.Log;
@ -237,4 +238,14 @@ public final class DbUtil {
public static void setReturnGeneratedKeyGlobal(boolean returnGeneratedKey) { public static void setReturnGeneratedKeyGlobal(boolean returnGeneratedKey) {
GlobalDbConfig.setReturnGeneratedKey(returnGeneratedKey); GlobalDbConfig.setReturnGeneratedKey(returnGeneratedKey);
} }
/**
* 设置从绝对路径加载数据库配置文件
* 特殊情况使用比如写Minecraft插件的时候
*
* @param absolutePath 配置文件的绝对路径
*/
public static void setCustomizeDbSettingPath(String absolutePath) {
AbstractDSFactory.CUSTOMIZE_DB_SETTING_PATH = absolutePath;
}
} }

View File

@ -20,19 +20,30 @@ import java.util.concurrent.ConcurrentHashMap;
* 数据源是与配置文件中的分组相关的每个分组的数据源相互独立也就是每个分组的数据源是单例存在的 * 数据源是与配置文件中的分组相关的每个分组的数据源相互独立也就是每个分组的数据源是单例存在的
* *
* @author looly * @author looly
*
*/ */
public abstract class AbstractDSFactory extends DSFactory { public abstract class AbstractDSFactory extends DSFactory {
private static final long serialVersionUID = -6407302276272379881L; private static final long serialVersionUID = -6407302276272379881L;
/** 数据库配置文件可选路径1 */ /**
* 数据库配置文件可选路径1
*/
private static final String DEFAULT_DB_SETTING_PATH = "config/db.setting"; private static final String DEFAULT_DB_SETTING_PATH = "config/db.setting";
/** 数据库配置文件可选路径2 */ /**
* 数据库配置文件可选路径2
*/
private static final String DEFAULT_DB_SETTING_PATH2 = "db.setting"; private static final String DEFAULT_DB_SETTING_PATH2 = "db.setting";
/**
* 自定义数据库配置文件路径绝对路径特殊情况使用比如写Minecraft插件的时候
*/
public static String CUSTOMIZE_DB_SETTING_PATH = null;
/** 数据库连接配置文件 */ /**
* 数据库连接配置文件
*/
private final Setting setting; private final Setting setting;
/** 数据源池 */ /**
* 数据源池
*/
private final Map<String, DataSourceWrapper> dsMap; private final Map<String, DataSourceWrapper> dsMap;
/** /**
@ -47,6 +58,13 @@ public abstract class AbstractDSFactory extends DSFactory {
super(dataSourceName); super(dataSourceName);
//此参数的作用是在detectDSFactory方法自动检测所用连接池时如果实现类不存在调用此方法会自动抛出异常从而切换到下一种连接池的检测 //此参数的作用是在detectDSFactory方法自动检测所用连接池时如果实现类不存在调用此方法会自动抛出异常从而切换到下一种连接池的检测
Assert.notNull(dataSourceClass); Assert.notNull(dataSourceClass);
if (CUSTOMIZE_DB_SETTING_PATH != null) {
try {
setting = new Setting(CUSTOMIZE_DB_SETTING_PATH, false);
} catch (NoResourceException e3) {
throw new NoResourceException("Customize db setting file [{}] not found !", CUSTOMIZE_DB_SETTING_PATH);
}
}
if (null == setting) { if (null == setting) {
try { try {
setting = new Setting(DEFAULT_DB_SETTING_PATH, true); setting = new Setting(DEFAULT_DB_SETTING_PATH, true);
@ -58,6 +76,13 @@ public abstract class AbstractDSFactory extends DSFactory {
throw new NoResourceException("Default db setting [{}] or [{}] in classpath not found !", DEFAULT_DB_SETTING_PATH, DEFAULT_DB_SETTING_PATH2); throw new NoResourceException("Default db setting [{}] or [{}] in classpath not found !", DEFAULT_DB_SETTING_PATH, DEFAULT_DB_SETTING_PATH2);
} }
} }
if (CUSTOMIZE_DB_SETTING_PATH != null) {
try {
setting = new Setting(CUSTOMIZE_DB_SETTING_PATH, false);
} catch (NoResourceException e3) {
throw new NoResourceException("Customize db setting file [{}] not found !", CUSTOMIZE_DB_SETTING_PATH);
}
}
} }
// 读取配置用于SQL打印 // 读取配置用于SQL打印