feat: add creator module
This commit is contained in:
parent
97869a5172
commit
4f72018dd4
45
dynamic-datasource-creator/pom.xml
Normal file
45
dynamic-datasource-creator/pom.xml
Normal file
@ -0,0 +1,45 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xmlns="http://maven.apache.org/POM/4.0.0"
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<parent>
|
||||
<groupId>com.baomidou</groupId>
|
||||
<artifactId>dynamic-datasource</artifactId>
|
||||
<version>4.0.0</version>
|
||||
</parent>
|
||||
|
||||
<artifactId>dynamic-datasource-creator</artifactId>
|
||||
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>com.baomidou</groupId>
|
||||
<artifactId>dynamic-datasource-creator</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.alibaba</groupId>
|
||||
<artifactId>druid</artifactId>
|
||||
<optional>true</optional>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.zaxxer</groupId>
|
||||
<artifactId>HikariCP-java7</artifactId>
|
||||
<optional>true</optional>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.github.chris2018998</groupId>
|
||||
<artifactId>beecp</artifactId>
|
||||
<optional>true</optional>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.apache.commons</groupId>
|
||||
<artifactId>commons-dbcp2</artifactId>
|
||||
<optional>true</optional>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.atomikos</groupId>
|
||||
<artifactId>transactions-jdbc</artifactId>
|
||||
<optional>true</optional>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
</project>
|
@ -15,7 +15,6 @@
|
||||
*/
|
||||
package com.baomidou.dynamic.datasource.creator;
|
||||
|
||||
import com.baomidou.dynamic.datasource.common.DataSourceProperty;
|
||||
|
||||
import javax.sql.DataSource;
|
||||
|
@ -13,7 +13,7 @@
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package com.baomidou.dynamic.datasource.common;
|
||||
package com.baomidou.dynamic.datasource.creator;
|
||||
|
||||
import com.baomidou.dynamic.datasource.creator.atomikos.AtomikosConfig;
|
||||
import com.baomidou.dynamic.datasource.creator.beecp.BeeCpConfig;
|
@ -13,7 +13,7 @@
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package com.baomidou.dynamic.datasource.common;
|
||||
package com.baomidou.dynamic.datasource.creator;
|
||||
|
||||
import lombok.Data;
|
||||
|
@ -16,18 +16,15 @@
|
||||
package com.baomidou.dynamic.datasource.creator.atomikos;
|
||||
|
||||
import com.atomikos.jdbc.AtomikosDataSourceBean;
|
||||
import com.baomidou.dynamic.datasource.common.DataSourceProperty;
|
||||
import com.baomidou.dynamic.datasource.creator.DataSourceCreator;
|
||||
import com.baomidou.dynamic.datasource.creator.DataSourceProperty;
|
||||
import com.baomidou.dynamic.datasource.enums.DdConstants;
|
||||
import com.baomidou.dynamic.datasource.enums.XADataSourceEnum;
|
||||
import com.baomidou.dynamic.datasource.toolkit.ConfigMergeCreator;
|
||||
import com.baomidou.mybatisplus.annotation.DbType;
|
||||
import com.baomidou.mybatisplus.extension.toolkit.JdbcUtils;
|
||||
import org.springframework.beans.factory.InitializingBean;
|
||||
|
||||
import javax.sql.DataSource;
|
||||
import java.util.Properties;
|
||||
|
||||
import static com.baomidou.dynamic.datasource.support.DdConstants.ATOMIKOS_DATASOURCE;
|
||||
|
||||
/**
|
||||
* Atomikos数据源配置
|
||||
@ -35,17 +32,16 @@ import static com.baomidou.dynamic.datasource.support.DdConstants.ATOMIKOS_DATAS
|
||||
* @author <a href="mailto:312290710@qq.com">jiazhifeng</a>
|
||||
* @date 2023/03/02 10:20
|
||||
*/
|
||||
public class AtomikosDataSourceCreator extends AbstractDataSourceCreator implements DataSourceCreator, InitializingBean {
|
||||
public class AtomikosDataSourceCreator implements DataSourceCreator {
|
||||
private static final ConfigMergeCreator<AtomikosConfig, AtomikosConfig> MERGE_CREATOR = new ConfigMergeCreator<>("AtomikosConfig", AtomikosConfig.class, AtomikosConfig.class);
|
||||
private AtomikosConfig atomikosConfig;
|
||||
|
||||
@Override
|
||||
public DataSource doCreateDataSource(DataSourceProperty dataSourceProperty) {
|
||||
public DataSource createDataSource(DataSourceProperty dataSourceProperty) {
|
||||
AtomikosConfig config = MERGE_CREATOR.create(atomikosConfig, dataSourceProperty.getAtomikos());
|
||||
AtomikosDataSourceBean xaDataSource = new AtomikosDataSourceBean();
|
||||
|
||||
DbType dbType = JdbcUtils.getDbType(dataSourceProperty.getUrl());
|
||||
xaDataSource.setXaDataSourceClassName(XADataSourceEnum.getByDbType(dbType));
|
||||
xaDataSource.setXaDataSourceClassName(dataSourceProperty.getDriverClassName());
|
||||
|
||||
Properties xaProperties = new Properties();
|
||||
xaProperties.setProperty("url", dataSourceProperty.getUrl());
|
||||
@ -69,12 +65,6 @@ public class AtomikosDataSourceCreator extends AbstractDataSourceCreator impleme
|
||||
@Override
|
||||
public boolean support(DataSourceProperty dataSourceProperty) {
|
||||
Class<? extends DataSource> type = dataSourceProperty.getType();
|
||||
DbType dbType = JdbcUtils.getDbType(dataSourceProperty.getUrl());
|
||||
return (type == null || ATOMIKOS_DATASOURCE.equals(type.getName())) && XADataSourceEnum.contains(dbType);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void afterPropertiesSet() throws Exception {
|
||||
atomikosConfig = properties.getAtomikos();
|
||||
return (type == null || DdConstants.ATOMIKOS_DATASOURCE.equals(type.getName())) && XADataSourceEnum.contains(dataSourceProperty.getDriverClassName());
|
||||
}
|
||||
}
|
@ -15,8 +15,8 @@
|
||||
*/
|
||||
package com.baomidou.dynamic.datasource.creator.basic;
|
||||
|
||||
import com.baomidou.dynamic.datasource.common.DataSourceProperty;
|
||||
import com.baomidou.dynamic.datasource.creator.DataSourceCreator;
|
||||
import com.baomidou.dynamic.datasource.creator.DataSourceProperty;
|
||||
import com.baomidou.dynamic.datasource.exception.ErrorCreateDataSourceException;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
|
||||
@ -30,7 +30,7 @@ import java.lang.reflect.Method;
|
||||
* @since 2020/1/21
|
||||
*/
|
||||
@Slf4j
|
||||
public class BasicDataSourceCreator extends AbstractDataSourceCreator implements DataSourceCreator {
|
||||
public class BasicDataSourceCreator implements DataSourceCreator {
|
||||
|
||||
private static Method createMethod;
|
||||
private static Method typeMethod;
|
||||
@ -76,7 +76,7 @@ public class BasicDataSourceCreator extends AbstractDataSourceCreator implements
|
||||
* @return 数据源
|
||||
*/
|
||||
@Override
|
||||
public DataSource doCreateDataSource(DataSourceProperty dataSourceProperty) {
|
||||
public DataSource createDataSource(DataSourceProperty dataSourceProperty) {
|
||||
try {
|
||||
Object o1 = createMethod.invoke(null);
|
||||
Object o2 = typeMethod.invoke(o1, dataSourceProperty.getType());
|
@ -17,18 +17,17 @@ package com.baomidou.dynamic.datasource.creator.beecp;
|
||||
|
||||
import cn.beecp.BeeDataSource;
|
||||
import cn.beecp.BeeDataSourceConfig;
|
||||
import com.baomidou.dynamic.datasource.common.DataSourceProperty;
|
||||
import com.baomidou.dynamic.datasource.creator.DataSourceCreator;
|
||||
import com.baomidou.dynamic.datasource.creator.DataSourceProperty;
|
||||
import com.baomidou.dynamic.datasource.enums.DdConstants;
|
||||
import com.baomidou.dynamic.datasource.toolkit.ConfigMergeCreator;
|
||||
import com.baomidou.dynamic.datasource.toolkit.DsStrUtils;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.InitializingBean;
|
||||
import org.springframework.util.StringUtils;
|
||||
|
||||
import javax.sql.DataSource;
|
||||
import java.lang.reflect.InvocationTargetException;
|
||||
import java.lang.reflect.Method;
|
||||
|
||||
import static com.baomidou.dynamic.datasource.support.DdConstants.BEECP_DATASOURCE;
|
||||
|
||||
/**
|
||||
* BeeCp数据源创建器
|
||||
@ -37,7 +36,7 @@ import static com.baomidou.dynamic.datasource.support.DdConstants.BEECP_DATASOUR
|
||||
* @since 2020/5/14
|
||||
*/
|
||||
@Slf4j
|
||||
public class BeeCpDataSourceCreator extends AbstractDataSourceCreator implements DataSourceCreator, InitializingBean {
|
||||
public class BeeCpDataSourceCreator implements DataSourceCreator {
|
||||
|
||||
private static final ConfigMergeCreator<BeeCpConfig, BeeDataSourceConfig> MERGE_CREATOR = new ConfigMergeCreator<>("BeeCp", BeeCpConfig.class, BeeDataSourceConfig.class);
|
||||
|
||||
@ -53,16 +52,15 @@ public class BeeCpDataSourceCreator extends AbstractDataSourceCreator implements
|
||||
|
||||
private BeeCpConfig gConfig;
|
||||
|
||||
|
||||
@Override
|
||||
public DataSource doCreateDataSource(DataSourceProperty dataSourceProperty) {
|
||||
public DataSource createDataSource(DataSourceProperty dataSourceProperty) {
|
||||
BeeDataSourceConfig config = MERGE_CREATOR.create(gConfig, dataSourceProperty.getBeecp());
|
||||
config.setUsername(dataSourceProperty.getUsername());
|
||||
config.setPassword(dataSourceProperty.getPassword());
|
||||
config.setJdbcUrl(dataSourceProperty.getUrl());
|
||||
config.setPoolName(dataSourceProperty.getPoolName());
|
||||
String driverClassName = dataSourceProperty.getDriverClassName();
|
||||
if (!StringUtils.isEmpty(driverClassName)) {
|
||||
if (DsStrUtils.hasText(driverClassName)) {
|
||||
config.setDriverClassName(driverClassName);
|
||||
}
|
||||
if (Boolean.FALSE.equals(dataSourceProperty.getLazy())) {
|
||||
@ -80,11 +78,6 @@ public class BeeCpDataSourceCreator extends AbstractDataSourceCreator implements
|
||||
@Override
|
||||
public boolean support(DataSourceProperty dataSourceProperty) {
|
||||
Class<? extends DataSource> type = dataSourceProperty.getType();
|
||||
return type == null || BEECP_DATASOURCE.equals(type.getName());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void afterPropertiesSet() throws Exception {
|
||||
gConfig = properties.getBeecp();
|
||||
return type == null || DdConstants.BEECP_DATASOURCE.equals(type.getName());
|
||||
}
|
||||
}
|
@ -15,25 +15,23 @@
|
||||
*/
|
||||
package com.baomidou.dynamic.datasource.creator.dbcp;
|
||||
|
||||
import com.baomidou.dynamic.datasource.common.DataSourceProperty;
|
||||
import com.baomidou.dynamic.datasource.creator.DataSourceCreator;
|
||||
import com.baomidou.dynamic.datasource.creator.DataSourceProperty;
|
||||
import com.baomidou.dynamic.datasource.enums.DdConstants;
|
||||
import com.baomidou.dynamic.datasource.toolkit.ConfigMergeCreator;
|
||||
import com.baomidou.dynamic.datasource.toolkit.DsStrUtils;
|
||||
import lombok.SneakyThrows;
|
||||
import org.apache.commons.dbcp2.BasicDataSource;
|
||||
import org.springframework.beans.factory.InitializingBean;
|
||||
import org.springframework.util.StringUtils;
|
||||
|
||||
import javax.sql.DataSource;
|
||||
|
||||
import static com.baomidou.dynamic.datasource.support.DdConstants.DBCP2_DATASOURCE;
|
||||
|
||||
/**
|
||||
* DBCP数据源创建器
|
||||
*
|
||||
* @author TaoYu
|
||||
* @since 2021/5/18
|
||||
*/
|
||||
public class Dbcp2DataSourceCreator extends AbstractDataSourceCreator implements DataSourceCreator, InitializingBean {
|
||||
public class Dbcp2DataSourceCreator implements DataSourceCreator {
|
||||
|
||||
private static final ConfigMergeCreator<Dbcp2Config, BasicDataSource> MERGE_CREATOR = new ConfigMergeCreator<>("Dbcp2", Dbcp2Config.class, BasicDataSource.class);
|
||||
|
||||
@ -41,13 +39,13 @@ public class Dbcp2DataSourceCreator extends AbstractDataSourceCreator implements
|
||||
|
||||
@Override
|
||||
@SneakyThrows
|
||||
public DataSource doCreateDataSource(DataSourceProperty dataSourceProperty) {
|
||||
public DataSource createDataSource(DataSourceProperty dataSourceProperty) {
|
||||
BasicDataSource dataSource = MERGE_CREATOR.create(gConfig, dataSourceProperty.getDbcp2());
|
||||
dataSource.setUsername(dataSourceProperty.getUsername());
|
||||
dataSource.setPassword(dataSourceProperty.getPassword());
|
||||
dataSource.setUrl(dataSourceProperty.getUrl());
|
||||
String driverClassName = dataSourceProperty.getDriverClassName();
|
||||
if (!StringUtils.isEmpty(driverClassName)) {
|
||||
if (DsStrUtils.hasText(driverClassName)) {
|
||||
dataSource.setDriverClassName(driverClassName);
|
||||
}
|
||||
if (Boolean.FALSE.equals(dataSourceProperty.getLazy())) {
|
||||
@ -59,11 +57,6 @@ public class Dbcp2DataSourceCreator extends AbstractDataSourceCreator implements
|
||||
@Override
|
||||
public boolean support(DataSourceProperty dataSourceProperty) {
|
||||
Class<? extends DataSource> type = dataSourceProperty.getType();
|
||||
return type == null || DBCP2_DATASOURCE.equals(type.getName());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void afterPropertiesSet() throws Exception {
|
||||
gConfig = properties.getDbcp2();
|
||||
return type == null || DdConstants.DBCP2_DATASOURCE.equals(type.getName());
|
||||
}
|
||||
}
|
@ -23,13 +23,12 @@ import com.alibaba.druid.filter.logging.Slf4jLogFilter;
|
||||
import com.alibaba.druid.pool.DruidDataSource;
|
||||
import com.alibaba.druid.wall.WallConfig;
|
||||
import com.alibaba.druid.wall.WallFilter;
|
||||
import com.baomidou.dynamic.datasource.common.DataSourceProperty;
|
||||
import com.baomidou.dynamic.datasource.creator.DataSourceCreator;
|
||||
import com.baomidou.dynamic.datasource.creator.DataSourceProperty;
|
||||
import com.baomidou.dynamic.datasource.enums.DdConstants;
|
||||
import com.baomidou.dynamic.datasource.exception.ErrorCreateDataSourceException;
|
||||
import com.baomidou.dynamic.datasource.toolkit.DsStrUtils;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.context.ApplicationContext;
|
||||
import org.springframework.util.StringUtils;
|
||||
|
||||
import javax.sql.DataSource;
|
||||
import java.lang.reflect.Method;
|
||||
@ -38,7 +37,6 @@ import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Properties;
|
||||
|
||||
import static com.baomidou.dynamic.datasource.support.DdConstants.DRUID_DATASOURCE;
|
||||
|
||||
/**
|
||||
* Druid数据源创建器
|
||||
@ -63,8 +61,8 @@ public class DruidDataSourceCreator implements DataSourceCreator {
|
||||
}
|
||||
}
|
||||
|
||||
@Autowired(required = false)
|
||||
private ApplicationContext applicationContext;
|
||||
// @Autowired(required = false)
|
||||
// private ApplicationContext applicationContext;
|
||||
private DruidConfig gConfig;
|
||||
|
||||
@Override
|
||||
@ -75,7 +73,7 @@ public class DruidDataSourceCreator implements DataSourceCreator {
|
||||
dataSource.setUrl(dataSourceProperty.getUrl());
|
||||
dataSource.setName(dataSourceProperty.getPoolName());
|
||||
String driverClassName = dataSourceProperty.getDriverClassName();
|
||||
if (!StringUtils.isEmpty(driverClassName)) {
|
||||
if (DsStrUtils.hasText(driverClassName)) {
|
||||
dataSource.setDriverClassName(driverClassName);
|
||||
}
|
||||
DruidConfig config = dataSourceProperty.getDruid();
|
||||
@ -105,7 +103,7 @@ public class DruidDataSourceCreator implements DataSourceCreator {
|
||||
|
||||
private List<Filter> initFilters(DataSourceProperty dataSourceProperty, String filters) {
|
||||
List<Filter> proxyFilters = new ArrayList<>(2);
|
||||
if (!StringUtils.isEmpty(filters)) {
|
||||
if (DsStrUtils.hasText(filters)) {
|
||||
String[] filterItems = filters.split(",");
|
||||
for (String filter : filterItems) {
|
||||
switch (filter) {
|
||||
@ -135,11 +133,11 @@ public class DruidDataSourceCreator implements DataSourceCreator {
|
||||
}
|
||||
}
|
||||
}
|
||||
if (this.applicationContext != null) {
|
||||
for (String filterId : gConfig.getProxyFilters()) {
|
||||
proxyFilters.add(this.applicationContext.getBean(filterId, Filter.class));
|
||||
}
|
||||
}
|
||||
// if (this.applicationContext != null) {
|
||||
// for (String filterId : gConfig.getProxyFilters()) {
|
||||
// proxyFilters.add(this.applicationContext.getBean(filterId, Filter.class));
|
||||
// }
|
||||
// }
|
||||
return proxyFilters;
|
||||
}
|
||||
|
||||
@ -246,7 +244,6 @@ public class DruidDataSourceCreator implements DataSourceCreator {
|
||||
@Override
|
||||
public boolean support(DataSourceProperty dataSourceProperty) {
|
||||
Class<? extends DataSource> type = dataSourceProperty.getType();
|
||||
return type == null || DRUID_DATASOURCE.equals(type.getName());
|
||||
return type == null || DdConstants.DRUID_DATASOURCE.equals(type.getName());
|
||||
}
|
||||
|
||||
}
|
@ -15,27 +15,25 @@
|
||||
*/
|
||||
package com.baomidou.dynamic.datasource.creator.hikaricp;
|
||||
|
||||
import com.baomidou.dynamic.datasource.common.DataSourceProperty;
|
||||
import com.baomidou.dynamic.datasource.creator.DataSourceCreator;
|
||||
import com.baomidou.dynamic.datasource.creator.DataSourceProperty;
|
||||
import com.baomidou.dynamic.datasource.enums.DdConstants;
|
||||
import com.baomidou.dynamic.datasource.toolkit.ConfigMergeCreator;
|
||||
import com.baomidou.dynamic.datasource.toolkit.DsStrUtils;
|
||||
import com.zaxxer.hikari.HikariConfig;
|
||||
import com.zaxxer.hikari.HikariDataSource;
|
||||
import org.springframework.beans.factory.InitializingBean;
|
||||
import org.springframework.util.StringUtils;
|
||||
|
||||
import javax.sql.DataSource;
|
||||
import java.lang.reflect.InvocationTargetException;
|
||||
import java.lang.reflect.Method;
|
||||
|
||||
import static com.baomidou.dynamic.datasource.support.DdConstants.HIKARI_DATASOURCE;
|
||||
|
||||
/**
|
||||
* Hikari数据源创建器
|
||||
*
|
||||
* @author TaoYu
|
||||
* @since 2020/1/21
|
||||
*/
|
||||
public class HikariDataSourceCreator extends AbstractDataSourceCreator implements DataSourceCreator, InitializingBean {
|
||||
public class HikariDataSourceCreator implements DataSourceCreator {
|
||||
|
||||
private static final ConfigMergeCreator<HikariCpConfig, HikariConfig> MERGE_CREATOR = new ConfigMergeCreator<>("HikariCp", HikariCpConfig.class, HikariConfig.class);
|
||||
private static Method configCopyMethod = null;
|
||||
@ -68,14 +66,14 @@ public class HikariDataSourceCreator extends AbstractDataSourceCreator implement
|
||||
}
|
||||
|
||||
@Override
|
||||
public DataSource doCreateDataSource(DataSourceProperty dataSourceProperty) {
|
||||
public DataSource createDataSource(DataSourceProperty dataSourceProperty) {
|
||||
HikariConfig config = MERGE_CREATOR.create(gConfig, dataSourceProperty.getHikari());
|
||||
config.setUsername(dataSourceProperty.getUsername());
|
||||
config.setPassword(dataSourceProperty.getPassword());
|
||||
config.setJdbcUrl(dataSourceProperty.getUrl());
|
||||
config.setPoolName(dataSourceProperty.getPoolName());
|
||||
String driverClassName = dataSourceProperty.getDriverClassName();
|
||||
if (!StringUtils.isEmpty(driverClassName)) {
|
||||
if (DsStrUtils.hasText(driverClassName)) {
|
||||
config.setDriverClassName(driverClassName);
|
||||
}
|
||||
if (Boolean.FALSE.equals(dataSourceProperty.getLazy())) {
|
||||
@ -94,11 +92,6 @@ public class HikariDataSourceCreator extends AbstractDataSourceCreator implement
|
||||
@Override
|
||||
public boolean support(DataSourceProperty dataSourceProperty) {
|
||||
Class<? extends DataSource> type = dataSourceProperty.getType();
|
||||
return type == null || HIKARI_DATASOURCE.equals(type.getName());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void afterPropertiesSet() throws Exception {
|
||||
gConfig = properties.getHikari();
|
||||
return type == null || DdConstants.HIKARI_DATASOURCE.equals(type.getName());
|
||||
}
|
||||
}
|
@ -13,7 +13,7 @@
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package com.baomidou.dynamic.datasource.support;
|
||||
package com.baomidou.dynamic.datasource.enums;
|
||||
|
||||
/**
|
||||
* 动态数据源常量
|
||||
@ -52,4 +52,4 @@ public interface DdConstants {
|
||||
* Atomikos数据源
|
||||
*/
|
||||
String ATOMIKOS_DATASOURCE = "com.atomikos.jdbc.AtomikosDataSourceBean";
|
||||
}
|
||||
}
|
@ -15,7 +15,6 @@
|
||||
*/
|
||||
package com.baomidou.dynamic.datasource.enums;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.DbType;
|
||||
import lombok.Getter;
|
||||
|
||||
/**
|
||||
@ -26,35 +25,23 @@ import lombok.Getter;
|
||||
*/
|
||||
@Getter
|
||||
public enum XADataSourceEnum {
|
||||
ORACLE(DbType.ORACLE, "oracle.jdbc.xa.client.OracleXADataSource"),
|
||||
MYSQL(DbType.MYSQL, "com.mysql.cj.jdbc.MysqlXADataSource"),
|
||||
POSTGRE_SQL(DbType.POSTGRE_SQL, "org.postgresql.xa.PGXADataSource"),
|
||||
H2(DbType.H2, "org.h2.jdbcx.JdbcDataSource"),
|
||||
;
|
||||
MYSQL("com.mysql.cj.jdbc.MysqlXADataSource"),
|
||||
ORACLE("oracle.jdbc.xa.client.OracleXADataSource"),
|
||||
POSTGRE_SQL("org.postgresql.xa.PGXADataSource"),
|
||||
H2("org.h2.jdbcx.JdbcDataSource");
|
||||
|
||||
private final DbType dbType;
|
||||
private final String xaDataSourceClassName;
|
||||
private final String xaDriverClassName;
|
||||
|
||||
XADataSourceEnum(DbType dbType, String xaDataSourceClassName) {
|
||||
this.dbType = dbType;
|
||||
this.xaDataSourceClassName = xaDataSourceClassName;
|
||||
XADataSourceEnum(String xaDriverClassName) {
|
||||
this.xaDriverClassName = xaDriverClassName;
|
||||
}
|
||||
|
||||
public static boolean contains(DbType dbType) {
|
||||
public static boolean contains(String xaDataSourceClassName) {
|
||||
for (XADataSourceEnum item : values()) {
|
||||
if (item.getDbType() == dbType) {
|
||||
if (item.getXaDriverClassName().equals(xaDataSourceClassName)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public static String getByDbType(DbType dbType) {
|
||||
for (XADataSourceEnum item : values()) {
|
||||
if (item.getDbType() == dbType) {
|
||||
return item.getXaDataSourceClassName();
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
@ -0,0 +1,26 @@
|
||||
package com.baomidou.dynamic.datasource.toolkit;
|
||||
|
||||
public abstract class DsStrUtils {
|
||||
|
||||
public static boolean hasLength(CharSequence str) {
|
||||
return (str != null && str.length() > 0);
|
||||
}
|
||||
|
||||
public static boolean hasLength(String str) {
|
||||
return hasLength((CharSequence) str);
|
||||
}
|
||||
|
||||
public static boolean hasText(CharSequence str) {
|
||||
if (!hasLength(str)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
int strLen = str.length();
|
||||
for (int i = 0; i < strLen; i++) {
|
||||
if (!Character.isWhitespace(str.charAt(i))) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
@ -42,6 +42,10 @@
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-aop</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-web</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-configuration-processor</artifactId>
|
||||
|
@ -15,7 +15,7 @@
|
||||
*/
|
||||
package com.baomidou.dynamic.datasource.spring.boot.autoconfigure;
|
||||
|
||||
import com.baomidou.dynamic.datasource.common.DataSourceProperty;
|
||||
import com.baomidou.dynamic.datasource.creator.DataSourceProperty;
|
||||
import com.baomidou.dynamic.datasource.creator.atomikos.AtomikosConfig;
|
||||
import com.baomidou.dynamic.datasource.creator.beecp.BeeCpConfig;
|
||||
import com.baomidou.dynamic.datasource.creator.dbcp.Dbcp2Config;
|
||||
|
@ -11,33 +11,11 @@
|
||||
<artifactId>dynamic-datasource-spring</artifactId>
|
||||
|
||||
<dependencies>
|
||||
<!--datasource-->
|
||||
<dependency>
|
||||
<groupId>com.alibaba</groupId>
|
||||
<artifactId>druid</artifactId>
|
||||
<optional>true</optional>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.zaxxer</groupId>
|
||||
<artifactId>HikariCP-java7</artifactId>
|
||||
<optional>true</optional>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.github.chris2018998</groupId>
|
||||
<artifactId>beecp</artifactId>
|
||||
<optional>true</optional>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.atomikos</groupId>
|
||||
<artifactId>transactions-jdbc</artifactId>
|
||||
<optional>true</optional>
|
||||
<groupId>com.baomidou</groupId>
|
||||
<artifactId>dynamic-datasource-creator</artifactId>
|
||||
</dependency>
|
||||
<!--third-->
|
||||
<dependency>
|
||||
<groupId>org.apache.commons</groupId>
|
||||
<artifactId>commons-dbcp2</artifactId>
|
||||
<optional>true</optional>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.baomidou</groupId>
|
||||
<artifactId>mybatis-plus</artifactId>
|
||||
|
@ -13,7 +13,7 @@
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package com.baomidou.dynamic.datasource.common;
|
||||
package com.baomidou.dynamic.datasource.creator;
|
||||
|
||||
import com.baomidou.dynamic.datasource.enums.SeataMode;
|
||||
import com.baomidou.dynamic.datasource.toolkit.CryptoUtils;
|
@ -15,9 +15,6 @@
|
||||
*/
|
||||
package com.baomidou.dynamic.datasource.creator;
|
||||
|
||||
import com.baomidou.dynamic.datasource.common.DataSourceGlobalProperty;
|
||||
import com.baomidou.dynamic.datasource.common.DataSourceProperty;
|
||||
import com.baomidou.dynamic.datasource.common.DatasourceInitProperties;
|
||||
import com.baomidou.dynamic.datasource.ds.ItemDataSource;
|
||||
import com.baomidou.dynamic.datasource.enums.SeataMode;
|
||||
import com.baomidou.dynamic.datasource.event.DataSourceInitEvent;
|
||||
|
@ -15,8 +15,8 @@
|
||||
*/
|
||||
package com.baomidou.dynamic.datasource.creator.jndi;
|
||||
|
||||
import com.baomidou.dynamic.datasource.common.DataSourceProperty;
|
||||
import com.baomidou.dynamic.datasource.creator.DataSourceCreator;
|
||||
import com.baomidou.dynamic.datasource.creator.DataSourceProperty;
|
||||
import org.springframework.jdbc.datasource.lookup.JndiDataSourceLookup;
|
||||
|
||||
import javax.sql.DataSource;
|
||||
@ -27,7 +27,7 @@ import javax.sql.DataSource;
|
||||
* @author TaoYu
|
||||
* @since 2020/1/27
|
||||
*/
|
||||
public class JndiDataSourceCreator extends AbstractDataSourceCreator implements DataSourceCreator {
|
||||
public class JndiDataSourceCreator implements DataSourceCreator {
|
||||
|
||||
private static final JndiDataSourceLookup LOOKUP = new JndiDataSourceLookup();
|
||||
|
||||
@ -42,7 +42,7 @@ public class JndiDataSourceCreator extends AbstractDataSourceCreator implements
|
||||
* @return 数据源
|
||||
*/
|
||||
@Override
|
||||
public DataSource doCreateDataSource(DataSourceProperty dataSourceProperty) {
|
||||
public DataSource createDataSource(DataSourceProperty dataSourceProperty) {
|
||||
return createDataSource(dataSourceProperty.getJndiName());
|
||||
}
|
||||
|
||||
|
@ -15,7 +15,8 @@
|
||||
*/
|
||||
package com.baomidou.dynamic.datasource.event;
|
||||
|
||||
import com.baomidou.dynamic.datasource.common.DataSourceProperty;
|
||||
|
||||
import com.baomidou.dynamic.datasource.creator.DataSourceProperty;
|
||||
|
||||
import javax.sql.DataSource;
|
||||
|
||||
|
@ -15,7 +15,7 @@
|
||||
*/
|
||||
package com.baomidou.dynamic.datasource.event;
|
||||
|
||||
import com.baomidou.dynamic.datasource.common.DataSourceProperty;
|
||||
import com.baomidou.dynamic.datasource.creator.DataSourceProperty;
|
||||
import com.baomidou.dynamic.datasource.toolkit.CryptoUtils;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.util.StringUtils;
|
||||
|
@ -15,7 +15,7 @@
|
||||
*/
|
||||
package com.baomidou.dynamic.datasource.plugin;
|
||||
|
||||
import com.baomidou.dynamic.datasource.support.DdConstants;
|
||||
import com.baomidou.dynamic.datasource.enums.DdConstants;
|
||||
import com.baomidou.dynamic.datasource.toolkit.DynamicDataSourceContextHolder;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.ibatis.cache.CacheKey;
|
||||
@ -71,4 +71,4 @@ public class MasterSlaveAutoRoutingPlugin implements Interceptor {
|
||||
@Override
|
||||
public void setProperties(Properties properties) {
|
||||
}
|
||||
}
|
||||
}
|
@ -15,7 +15,7 @@
|
||||
*/
|
||||
package com.baomidou.dynamic.datasource.provider;
|
||||
|
||||
import com.baomidou.dynamic.datasource.common.DataSourceProperty;
|
||||
import com.baomidou.dynamic.datasource.creator.DataSourceProperty;
|
||||
import com.baomidou.dynamic.datasource.creator.DefaultDataSourceCreator;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
|
@ -15,7 +15,7 @@
|
||||
*/
|
||||
package com.baomidou.dynamic.datasource.provider;
|
||||
|
||||
import com.baomidou.dynamic.datasource.common.DataSourceProperty;
|
||||
import com.baomidou.dynamic.datasource.creator.DataSourceProperty;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.util.StringUtils;
|
||||
|
||||
|
@ -15,7 +15,7 @@
|
||||
*/
|
||||
package com.baomidou.dynamic.datasource.provider;
|
||||
|
||||
import com.baomidou.dynamic.datasource.common.DataSourceProperty;
|
||||
import com.baomidou.dynamic.datasource.creator.DataSourceProperty;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
|
||||
|
6
pom.xml
6
pom.xml
@ -11,6 +11,7 @@
|
||||
<inceptionYear>2018</inceptionYear>
|
||||
|
||||
<modules>
|
||||
<module>dynamic-datasource-creator</module>
|
||||
<module>dynamic-datasource-spring</module>
|
||||
<module>dynamic-datasource-spring-boot-common</module>
|
||||
<module>dynamic-datasource-spring-boot-starter</module>
|
||||
@ -73,6 +74,11 @@
|
||||
|
||||
<dependencyManagement>
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>com.baomidou</groupId>
|
||||
<artifactId>dynamic-datasource-creator</artifactId>
|
||||
<version>4.0.0</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.baomidou</groupId>
|
||||
<artifactId>dynamic-datasource-spring</artifactId>
|
||||
|
Loading…
x
Reference in New Issue
Block a user