add BeeCP support

This commit is contained in:
Looly
2020-08-16 10:27:50 +08:00
parent 2f64b3b85d
commit ef235aab5d
8 changed files with 88 additions and 19 deletions

View File

@@ -71,6 +71,12 @@
<version>${c3p0.version}</version>
<optional>true</optional>
</dependency>
<dependency>
<groupId>com.github.chris2018998</groupId>
<artifactId>BeeCP</artifactId>
<version>2.5.3</version>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-dbcp2</artifactId>

View File

@@ -1,6 +1,7 @@
package cn.hutool.db.ds;
import cn.hutool.core.util.StrUtil;
import cn.hutool.db.ds.bee.BeeDSFactory;
import cn.hutool.db.ds.c3p0.C3p0DSFactory;
import cn.hutool.db.ds.dbcp.DbcpDSFactory;
import cn.hutool.db.ds.druid.DruidDSFactory;
@@ -156,7 +157,7 @@ public abstract class DSFactory implements Closeable, Serializable{
/**
* 创建数据源实现工厂<br>
* 此方法通过“试错”方式查找引入项目的连接池库,按照优先级寻找,一旦寻找到则创建对应的数据源工厂<br>
* 连接池优先级Hikari &gt; Druid &gt; Tomcat &gt; Dbcp &gt; C3p0 &gt; Hutool Pooled
* 连接池优先级Hikari &gt; Druid &gt; Tomcat &gt; BeeCP &gt; Dbcp &gt; C3p0 &gt; Hutool Pooled
*
* @param setting 数据库配置项
* @return 日志实现类
@@ -180,6 +181,11 @@ public abstract class DSFactory implements Closeable, Serializable{
//因为org.apache.tomcat.jdbc.pool.DataSource实现了此接口会首先检查接口的存在与否
// ignore
}
try {
return new BeeDSFactory(setting);
} catch (NoClassDefFoundError e) {
// ignore
}
try {
return new DbcpDSFactory(setting);
} catch (NoClassDefFoundError e) {

View File

@@ -0,0 +1,47 @@
package cn.hutool.db.ds.bee;
import cn.beecp.BeeDataSource;
import cn.beecp.BeeDataSourceConfig;
import cn.hutool.core.util.StrUtil;
import cn.hutool.db.ds.AbstractDSFactory;
import cn.hutool.setting.Setting;
import javax.sql.DataSource;
/**
* BeeCP数据源工厂类
*
* @author Looly
*
*/
public class BeeDSFactory extends AbstractDSFactory {
private static final long serialVersionUID = 1L;
public static final String DS_NAME = "BeeCP";
public BeeDSFactory() {
this(null);
}
public BeeDSFactory(Setting setting) {
super(DS_NAME, BeeDataSource.class, setting);
}
@Override
protected DataSource createDataSource(String jdbcUrl, String driver, String user, String pass, Setting poolSetting) {
final BeeDataSourceConfig beeConfig = new BeeDataSourceConfig(driver, jdbcUrl, user, pass);
poolSetting.toBean(beeConfig);
// remarks等特殊配置since 5.3.8
String connValue;
for (String key : KEY_CONN_PROPS) {
connValue = poolSetting.getAndRemoveStr(key);
if(StrUtil.isNotBlank(connValue)){
beeConfig.addConnectProperty(key, connValue);
}
}
return new BeeDataSource(beeConfig);
}
}

View File

@@ -0,0 +1,8 @@
/**
* BeeCP封装
* 见:https://github.com/Chris2018998/BeeCP
*
* @author looly
*
*/
package cn.hutool.db.ds.bee;

View File

@@ -1,6 +1,5 @@
package cn.hutool.db.ds.hikari;
import cn.hutool.core.lang.Console;
import cn.hutool.core.util.StrUtil;
import cn.hutool.db.ds.AbstractDSFactory;
import cn.hutool.setting.Setting;