From b1bd35b45257ac00543ec25aba2b0282dfddeaa9 Mon Sep 17 00:00:00 2001 From: MiniDay <372403923@qq.com> Date: Sun, 17 Mar 2024 00:58:32 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=96=B0=E5=A2=9E=20getDataSource=20AP?= =?UTF-8?q?I?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mc/plugin/core/common/api/CoreAPI.java | 19 ++------------- .../mc/plugin/core/common/util/CoreUtils.java | 24 +++++++++++++++++++ 2 files changed, 26 insertions(+), 17 deletions(-) diff --git a/core-common/src/main/java/cn/hamster3/mc/plugin/core/common/api/CoreAPI.java b/core-common/src/main/java/cn/hamster3/mc/plugin/core/common/api/CoreAPI.java index 8267738..ce66dd3 100644 --- a/core-common/src/main/java/cn/hamster3/mc/plugin/core/common/api/CoreAPI.java +++ b/core-common/src/main/java/cn/hamster3/mc/plugin/core/common/api/CoreAPI.java @@ -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.thread.NamedThreadFactory; +import cn.hamster3.mc.plugin.core.common.util.CoreUtils; import com.google.gson.Gson; -import com.zaxxer.hikari.HikariConfig; import com.zaxxer.hikari.HikariDataSource; import lombok.Getter; import net.kyori.adventure.platform.AudienceProvider; @@ -58,22 +58,7 @@ public abstract class CoreAPI { throw new IllegalArgumentException("配置文件中未找到 datasource 节点"); } getLogger().info("正在创建数据库连接池"); - 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("HamsterCore-Pool"); - hikariDataSource = new HikariDataSource(hikariConfig); + hikariDataSource = (HikariDataSource) CoreUtils.getDataSource(datasourceConfig); getLogger().info("数据库连接池创建完成"); } diff --git a/core-common/src/main/java/cn/hamster3/mc/plugin/core/common/util/CoreUtils.java b/core-common/src/main/java/cn/hamster3/mc/plugin/core/common/util/CoreUtils.java index 758c412..7897f39 100644 --- a/core-common/src/main/java/cn/hamster3/mc/plugin/core/common/util/CoreUtils.java +++ b/core-common/src/main/java/cn/hamster3/mc/plugin/core/common/util/CoreUtils.java @@ -1,12 +1,16 @@ package cn.hamster3.mc.plugin.core.common.util; +import cn.hamster3.mc.plugin.core.common.config.ConfigSection; 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.sound.Sound; import net.kyori.adventure.text.serializer.gson.GsonComponentSerializer; import net.kyori.adventure.title.Title; import org.jetbrains.annotations.NotNull; +import javax.sql.DataSource; import java.io.File; import java.io.IOException; 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); + } + /** * 按照给定的表达式计算 *