feat: 新增 getDataSource API
This commit is contained in:
@@ -2,8 +2,8 @@ package cn.hamster3.mc.plugin.core.common.api;
|
|||||||
|
|
||||||
import cn.hamster3.mc.plugin.core.common.config.ConfigSection;
|
import cn.hamster3.mc.plugin.core.common.config.ConfigSection;
|
||||||
import cn.hamster3.mc.plugin.core.common.thread.NamedThreadFactory;
|
import cn.hamster3.mc.plugin.core.common.thread.NamedThreadFactory;
|
||||||
|
import cn.hamster3.mc.plugin.core.common.util.CoreUtils;
|
||||||
import com.google.gson.Gson;
|
import com.google.gson.Gson;
|
||||||
import com.zaxxer.hikari.HikariConfig;
|
|
||||||
import com.zaxxer.hikari.HikariDataSource;
|
import com.zaxxer.hikari.HikariDataSource;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import net.kyori.adventure.platform.AudienceProvider;
|
import net.kyori.adventure.platform.AudienceProvider;
|
||||||
@@ -58,22 +58,7 @@ public abstract class CoreAPI {
|
|||||||
throw new IllegalArgumentException("配置文件中未找到 datasource 节点");
|
throw new IllegalArgumentException("配置文件中未找到 datasource 节点");
|
||||||
}
|
}
|
||||||
getLogger().info("正在创建数据库连接池");
|
getLogger().info("正在创建数据库连接池");
|
||||||
HikariConfig hikariConfig = new HikariConfig();
|
hikariDataSource = (HikariDataSource) CoreUtils.getDataSource(datasourceConfig);
|
||||||
hikariConfig.setDriverClassName(datasourceConfig.getString("driver"));
|
|
||||||
hikariConfig.setJdbcUrl(datasourceConfig.getString("url"));
|
|
||||||
hikariConfig.setUsername(datasourceConfig.getString("username"));
|
|
||||||
hikariConfig.setPassword(datasourceConfig.getString("password"));
|
|
||||||
hikariConfig.setMaximumPoolSize(datasourceConfig.getInt("maximum-pool-size", 3));
|
|
||||||
hikariConfig.setMinimumIdle(datasourceConfig.getInt("minimum-idle", 1));
|
|
||||||
long keepAliveTime = datasourceConfig.getLong("keep-alive-time", 0);
|
|
||||||
if (keepAliveTime > 5000) {
|
|
||||||
hikariConfig.setKeepaliveTime(keepAliveTime);
|
|
||||||
}
|
|
||||||
hikariConfig.setIdleTimeout(datasourceConfig.getLong("idle-timeout", 10 * 60 * 1000));
|
|
||||||
hikariConfig.setMaxLifetime(datasourceConfig.getLong("max-lifetime", 30 * 60 * 1000));
|
|
||||||
hikariConfig.setValidationTimeout(datasourceConfig.getLong("validation-timeout", 5000));
|
|
||||||
hikariConfig.setPoolName("HamsterCore-Pool");
|
|
||||||
hikariDataSource = new HikariDataSource(hikariConfig);
|
|
||||||
getLogger().info("数据库连接池创建完成");
|
getLogger().info("数据库连接池创建完成");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -1,12 +1,16 @@
|
|||||||
package cn.hamster3.mc.plugin.core.common.util;
|
package cn.hamster3.mc.plugin.core.common.util;
|
||||||
|
|
||||||
|
import cn.hamster3.mc.plugin.core.common.config.ConfigSection;
|
||||||
import com.google.gson.JsonObject;
|
import com.google.gson.JsonObject;
|
||||||
|
import com.zaxxer.hikari.HikariConfig;
|
||||||
|
import com.zaxxer.hikari.HikariDataSource;
|
||||||
import net.kyori.adventure.key.Key;
|
import net.kyori.adventure.key.Key;
|
||||||
import net.kyori.adventure.sound.Sound;
|
import net.kyori.adventure.sound.Sound;
|
||||||
import net.kyori.adventure.text.serializer.gson.GsonComponentSerializer;
|
import net.kyori.adventure.text.serializer.gson.GsonComponentSerializer;
|
||||||
import net.kyori.adventure.title.Title;
|
import net.kyori.adventure.title.Title;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
|
import javax.sql.DataSource;
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.nio.file.Files;
|
import java.nio.file.Files;
|
||||||
@@ -121,6 +125,26 @@ public final class CoreUtils {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@NotNull
|
||||||
|
public static DataSource getDataSource(@NotNull ConfigSection datasourceConfig) {
|
||||||
|
HikariConfig hikariConfig = new HikariConfig();
|
||||||
|
hikariConfig.setDriverClassName(datasourceConfig.getString("driver"));
|
||||||
|
hikariConfig.setJdbcUrl(datasourceConfig.getString("url"));
|
||||||
|
hikariConfig.setUsername(datasourceConfig.getString("username"));
|
||||||
|
hikariConfig.setPassword(datasourceConfig.getString("password"));
|
||||||
|
hikariConfig.setMaximumPoolSize(datasourceConfig.getInt("maximum-pool-size", 3));
|
||||||
|
hikariConfig.setMinimumIdle(datasourceConfig.getInt("minimum-idle", 1));
|
||||||
|
long keepAliveTime = datasourceConfig.getLong("keep-alive-time", 0);
|
||||||
|
if (keepAliveTime > 5000) {
|
||||||
|
hikariConfig.setKeepaliveTime(keepAliveTime);
|
||||||
|
}
|
||||||
|
hikariConfig.setIdleTimeout(datasourceConfig.getLong("idle-timeout", 10 * 60 * 1000));
|
||||||
|
hikariConfig.setMaxLifetime(datasourceConfig.getLong("max-lifetime", 30 * 60 * 1000));
|
||||||
|
hikariConfig.setValidationTimeout(datasourceConfig.getLong("validation-timeout", 5000));
|
||||||
|
hikariConfig.setPoolName(datasourceConfig.getString("name", "HamsterCore-Pool"));
|
||||||
|
return new HikariDataSource(hikariConfig);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 按照给定的表达式计算
|
* 按照给定的表达式计算
|
||||||
* <p>
|
* <p>
|
||||||
|
Reference in New Issue
Block a user