From 02d78c98535c8fdda3be77994449b79d132576ae Mon Sep 17 00:00:00 2001 From: fengshuonan Date: Thu, 15 Sep 2022 11:08:04 +0800 Subject: [PATCH] =?UTF-8?q?=E3=80=907.2.5=E3=80=91=E3=80=90db=E3=80=91?= =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=A4=9A=E6=95=B0=E6=8D=AE=E6=BA=90=E5=88=9D?= =?UTF-8?q?=E5=A7=8B=E5=8C=96=E8=BF=87=E7=A8=8B=E4=B8=AD=E7=9A=84=E5=8F=82?= =?UTF-8?q?=E6=95=B0=E8=AE=BE=E7=BD=AE=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../listener/DataSourceInitListener.java | 104 ++++++++++++++++++ 1 file changed, 104 insertions(+) diff --git a/kernel-d-ds-container/ds-container-sdk/src/main/java/cn/stylefeng/roses/kernel/dsctn/listener/DataSourceInitListener.java b/kernel-d-ds-container/ds-container-sdk/src/main/java/cn/stylefeng/roses/kernel/dsctn/listener/DataSourceInitListener.java index 3bbdfed3e..1c80faeff 100644 --- a/kernel-d-ds-container/ds-container-sdk/src/main/java/cn/stylefeng/roses/kernel/dsctn/listener/DataSourceInitListener.java +++ b/kernel-d-ds-container/ds-container-sdk/src/main/java/cn/stylefeng/roses/kernel/dsctn/listener/DataSourceInitListener.java @@ -24,6 +24,7 @@ */ package cn.stylefeng.roses.kernel.dsctn.listener; +import cn.hutool.core.convert.Convert; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import cn.stylefeng.roses.kernel.db.api.factory.DruidDatasourceFactory; @@ -79,6 +80,9 @@ public class DataSourceInitListener extends ContextInitializedListener implement druidProperties.setUsername(dataSourceUsername); druidProperties.setPassword(dataSourcePassword); + // 设置其他数据源配置 + this.setOtherDruidConfigs(environment, druidProperties); + // 创建主数据源 DruidDataSource druidDataSource = DruidDatasourceFactory.createDruidDataSource(druidProperties); @@ -93,4 +97,104 @@ public class DataSourceInitListener extends ContextInitializedListener implement } + /** + * 配置其他的druid数据源配控制 + * + * @author fengshuonan + * @date 2022/9/15 11:00 + */ + private void setOtherDruidConfigs(ConfigurableEnvironment environment, DruidProperties druidProperties) { + + // 连接池的相关配置 + String initialSize = environment.getProperty("spring.datasource.initialSize"); + String maxActive = environment.getProperty("spring.datasource.maxActive"); + String minIdle = environment.getProperty("spring.datasource.minIdle"); + String maxWait = environment.getProperty("spring.datasource.maxWait"); + String poolPreparedStatements = environment.getProperty("spring.datasource.poolPreparedStatements"); + String maxPoolPreparedStatementPerConnectionSize = environment.getProperty("spring.datasource.maxPoolPreparedStatementPerConnectionSize"); + String validationQuery = environment.getProperty("spring.datasource.validationQuery"); + String validationQueryTimeout = environment.getProperty("spring.datasource.validationQueryTimeout"); + String testOnBorrow = environment.getProperty("spring.datasource.testOnBorrow"); + String testOnReturn = environment.getProperty("spring.datasource.testOnReturn"); + String testWhileIdle = environment.getProperty("spring.datasource.testWhileIdle"); + String keepAlive = environment.getProperty("spring.datasource.keepAlive"); + String timeBetweenEvictionRunsMillis = environment.getProperty("spring.datasource.timeBetweenEvictionRunsMillis"); + String minEvictableIdleTimeMillis = environment.getProperty("spring.datasource.minEvictableIdleTimeMillis"); + String filters = environment.getProperty("spring.datasource.filters"); + + // 设置配置 + if (ObjectUtil.isNotEmpty(initialSize)) { + Integer intValue = Convert.toInt(initialSize); + druidProperties.setInitialSize(intValue); + } + + if (ObjectUtil.isNotEmpty(maxActive)) { + Integer intValue = Convert.toInt(maxActive); + druidProperties.setMaxActive(intValue); + } + + if (ObjectUtil.isNotEmpty(minIdle)) { + Integer intValue = Convert.toInt(minIdle); + druidProperties.setMinIdle(intValue); + } + + if (ObjectUtil.isNotEmpty(maxWait)) { + Integer intValue = Convert.toInt(maxWait); + druidProperties.setMaxWait(intValue); + } + + if (ObjectUtil.isNotEmpty(poolPreparedStatements)) { + boolean booleanValue = Convert.toBool(poolPreparedStatements); + druidProperties.setPoolPreparedStatements(booleanValue); + } + + if (ObjectUtil.isNotEmpty(maxPoolPreparedStatementPerConnectionSize)) { + Integer intValue = Convert.toInt(maxPoolPreparedStatementPerConnectionSize); + druidProperties.setMaxPoolPreparedStatementPerConnectionSize(intValue); + } + + if (ObjectUtil.isNotEmpty(validationQuery)) { + druidProperties.setValidationQuery(validationQuery); + } + + if (ObjectUtil.isNotEmpty(validationQueryTimeout)) { + Integer intValue = Convert.toInt(validationQueryTimeout); + druidProperties.setValidationQueryTimeout(intValue); + } + + if (ObjectUtil.isNotEmpty(testOnBorrow)) { + boolean booleanValue = Convert.toBool(testOnBorrow); + druidProperties.setTestOnBorrow(booleanValue); + } + + if (ObjectUtil.isNotEmpty(testOnReturn)) { + boolean booleanValue = Convert.toBool(testOnReturn); + druidProperties.setTestOnReturn(booleanValue); + } + + if (ObjectUtil.isNotEmpty(testWhileIdle)) { + boolean booleanValue = Convert.toBool(testWhileIdle); + druidProperties.setTestWhileIdle(booleanValue); + } + + if (ObjectUtil.isNotEmpty(keepAlive)) { + boolean booleanValue = Convert.toBool(keepAlive); + druidProperties.setKeepAlive(booleanValue); + } + + if (ObjectUtil.isNotEmpty(timeBetweenEvictionRunsMillis)) { + Integer intValue = Convert.toInt(timeBetweenEvictionRunsMillis); + druidProperties.setTimeBetweenEvictionRunsMillis(intValue); + } + + if (ObjectUtil.isNotEmpty(minEvictableIdleTimeMillis)) { + Integer intValue = Convert.toInt(minEvictableIdleTimeMillis); + druidProperties.setMinEvictableIdleTimeMillis(intValue); + } + + if (ObjectUtil.isNotEmpty(filters)) { + druidProperties.setFilters(filters); + } + } + }