feat: add spring-boot-common module
This commit is contained in:
parent
9f9b1f1de0
commit
97869a5172
51
dynamic-datasource-spring-boot-common/pom.xml
Normal file
51
dynamic-datasource-spring-boot-common/pom.xml
Normal file
@ -0,0 +1,51 @@
|
||||
<?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-spring-boot-common</artifactId>
|
||||
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>com.baomidou</groupId>
|
||||
<artifactId>dynamic-datasource-spring</artifactId>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>com.zaxxer</groupId>
|
||||
<artifactId>HikariCP-java7</artifactId>
|
||||
<optional>true</optional>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.alibaba</groupId>
|
||||
<artifactId>druid</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>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-aop</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-configuration-processor</artifactId>
|
||||
<optional>true</optional>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
</project>
|
@ -0,0 +1,58 @@
|
||||
/*
|
||||
* Copyright © 2018 organization baomidou
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package com.baomidou.dynamic.datasource.spring.boot.autoconfigure;
|
||||
|
||||
import com.baomidou.dynamic.datasource.DynamicRoutingDataSource;
|
||||
import com.baomidou.dynamic.datasource.event.DataSourceInitEvent;
|
||||
import com.baomidou.dynamic.datasource.event.EncDataSourceInitEvent;
|
||||
import com.baomidou.dynamic.datasource.provider.DynamicDataSourceProvider;
|
||||
import com.baomidou.dynamic.datasource.provider.YmlDynamicDataSourceProvider;
|
||||
import com.baomidou.dynamic.datasource.strategy.DynamicDataSourceStrategy;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
|
||||
import org.springframework.boot.context.properties.EnableConfigurationProperties;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.core.annotation.Order;
|
||||
|
||||
/**
|
||||
* 动态数据源核心自动配置类
|
||||
*
|
||||
* @author TaoYu Kanyuxia
|
||||
* @see DynamicDataSourceProvider
|
||||
* @see DynamicDataSourceStrategy
|
||||
* @see DynamicRoutingDataSource
|
||||
* @since 1.0.0
|
||||
*/
|
||||
@Configuration
|
||||
@RequiredArgsConstructor
|
||||
@EnableConfigurationProperties(DynamicDataSourceProperties.class)
|
||||
public class DynamicDataSourceAssistConfiguration {
|
||||
|
||||
private final DynamicDataSourceProperties properties;
|
||||
|
||||
@Bean
|
||||
@Order(0)
|
||||
public DynamicDataSourceProvider ymlDynamicDataSourceProvider() {
|
||||
return new YmlDynamicDataSourceProvider(properties.getDatasource());
|
||||
}
|
||||
|
||||
@Bean
|
||||
@ConditionalOnMissingBean
|
||||
public DataSourceInitEvent dataSourceInitEvent() {
|
||||
return new EncDataSourceInitEvent();
|
||||
}
|
||||
}
|
@ -13,8 +13,9 @@
|
||||
* 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.spring.boot.autoconfigure;
|
||||
|
||||
import com.baomidou.dynamic.datasource.common.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;
|
||||
@ -27,9 +28,7 @@ import com.baomidou.dynamic.datasource.toolkit.CryptoUtils;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.boot.autoconfigure.jdbc.DataSourceProperties;
|
||||
import org.springframework.boot.context.properties.ConfigurationProperties;
|
||||
import org.springframework.boot.context.properties.NestedConfigurationProperty;
|
||||
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.Map;
|
||||
@ -38,7 +37,6 @@ import java.util.Map;
|
||||
* DynamicDataSourceProperties
|
||||
*
|
||||
* @author TaoYu Kanyuxia
|
||||
* @see DataSourceProperties
|
||||
* @since 1.0.0
|
||||
*/
|
||||
@Slf4j
|
||||
@ -88,32 +86,26 @@ public class DynamicDataSourceProperties {
|
||||
/**
|
||||
* Druid全局参数配置
|
||||
*/
|
||||
@NestedConfigurationProperty
|
||||
private DruidConfig druid = new DruidConfig();
|
||||
/**
|
||||
* HikariCp全局参数配置
|
||||
*/
|
||||
@NestedConfigurationProperty
|
||||
private HikariCpConfig hikari = new HikariCpConfig();
|
||||
/**
|
||||
* BeeCp全局参数配置
|
||||
*/
|
||||
@NestedConfigurationProperty
|
||||
private BeeCpConfig beecp = new BeeCpConfig();
|
||||
/**
|
||||
* DBCP2全局参数配置
|
||||
*/
|
||||
@NestedConfigurationProperty
|
||||
private Dbcp2Config dbcp2 = new Dbcp2Config();
|
||||
/**
|
||||
* atomikos全局参数配置
|
||||
*/
|
||||
@NestedConfigurationProperty
|
||||
private AtomikosConfig atomikos = new AtomikosConfig();
|
||||
|
||||
/**
|
||||
* aop with default ds annotation
|
||||
*/
|
||||
@NestedConfigurationProperty
|
||||
private DynamicDatasourceAopProperties aop = new DynamicDatasourceAopProperties();
|
||||
}
|
@ -15,8 +15,6 @@
|
||||
*/
|
||||
package com.baomidou.dynamic.datasource.spring.boot.autoconfigure;
|
||||
|
||||
import com.baomidou.dynamic.datasource.common.DynamicDataSourceProperties;
|
||||
|
||||
/**
|
||||
* @author hzh727172424
|
||||
* @since 3.4.0
|
@ -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.spring.boot.autoconfigure;
|
||||
|
||||
import lombok.Data;
|
||||
import org.springframework.core.Ordered;
|
@ -5,49 +5,16 @@
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<parent>
|
||||
<groupId>com.baomidou</groupId>
|
||||
<artifactId>dynamic-datasource-spring-boot-starter-parent</artifactId>
|
||||
<artifactId>dynamic-datasource</artifactId>
|
||||
<version>4.0.0</version>
|
||||
</parent>
|
||||
|
||||
<groupId>com.kll.deploy</groupId>
|
||||
<artifactId>dynamic-datasource-spring-boot-starter</artifactId>
|
||||
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>com.baomidou</groupId>
|
||||
<artifactId>dynamic-datasource-spring</artifactId>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>com.zaxxer</groupId>
|
||||
<artifactId>HikariCP-java7</artifactId>
|
||||
<optional>true</optional>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.alibaba</groupId>
|
||||
<artifactId>druid</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>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-web</artifactId>
|
||||
<optional>true</optional>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-aop</artifactId>
|
||||
<optional>true</optional>
|
||||
<artifactId>dynamic-datasource-spring-boot-common</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
|
@ -21,8 +21,6 @@ import com.baomidou.dynamic.datasource.annotation.DSTransactional;
|
||||
import com.baomidou.dynamic.datasource.aop.DynamicDataSourceAnnotationAdvisor;
|
||||
import com.baomidou.dynamic.datasource.aop.DynamicDataSourceAnnotationInterceptor;
|
||||
import com.baomidou.dynamic.datasource.aop.DynamicLocalTransactionInterceptor;
|
||||
import com.baomidou.dynamic.datasource.common.DynamicDataSourceProperties;
|
||||
import com.baomidou.dynamic.datasource.common.DynamicDatasourceAopProperties;
|
||||
import com.baomidou.dynamic.datasource.processor.DsHeaderProcessor;
|
||||
import com.baomidou.dynamic.datasource.processor.DsProcessor;
|
||||
import com.baomidou.dynamic.datasource.processor.DsSessionProcessor;
|
||||
|
@ -16,11 +16,7 @@
|
||||
package com.baomidou.dynamic.datasource.spring.boot.autoconfigure;
|
||||
|
||||
import com.baomidou.dynamic.datasource.DynamicRoutingDataSource;
|
||||
import com.baomidou.dynamic.datasource.common.DynamicDataSourceProperties;
|
||||
import com.baomidou.dynamic.datasource.event.DataSourceInitEvent;
|
||||
import com.baomidou.dynamic.datasource.event.EncDataSourceInitEvent;
|
||||
import com.baomidou.dynamic.datasource.provider.DynamicDataSourceProvider;
|
||||
import com.baomidou.dynamic.datasource.provider.YmlDynamicDataSourceProvider;
|
||||
import com.baomidou.dynamic.datasource.strategy.DynamicDataSourceStrategy;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.InitializingBean;
|
||||
@ -33,7 +29,6 @@ import org.springframework.boot.context.properties.EnableConfigurationProperties
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.context.annotation.Import;
|
||||
import org.springframework.core.annotation.Order;
|
||||
import org.springframework.util.CollectionUtils;
|
||||
|
||||
import javax.sql.DataSource;
|
||||
@ -52,7 +47,7 @@ import java.util.List;
|
||||
@Configuration
|
||||
@EnableConfigurationProperties(DynamicDataSourceProperties.class)
|
||||
@AutoConfigureBefore(value = DataSourceAutoConfiguration.class, name = "com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure")
|
||||
@Import(value = {DynamicDataSourceCreatorAutoConfiguration.class, DynamicDataSourceAopConfiguration.class})
|
||||
@Import(value = {DynamicDataSourceCreatorAutoConfiguration.class, DynamicDataSourceAopConfiguration.class, DynamicDataSourceAssistConfiguration.class})
|
||||
@ConditionalOnProperty(prefix = DynamicDataSourceProperties.PREFIX, name = "enabled", havingValue = "true", matchIfMissing = true)
|
||||
public class DynamicDataSourceAutoConfiguration implements InitializingBean {
|
||||
|
||||
@ -67,12 +62,6 @@ public class DynamicDataSourceAutoConfiguration implements InitializingBean {
|
||||
this.dataSourcePropertiesCustomizers = dataSourcePropertiesCustomizers.getIfAvailable();
|
||||
}
|
||||
|
||||
@Bean
|
||||
@Order(0)
|
||||
public DynamicDataSourceProvider ymlDynamicDataSourceProvider() {
|
||||
return new YmlDynamicDataSourceProvider(properties.getDatasource());
|
||||
}
|
||||
|
||||
@Bean
|
||||
@ConditionalOnMissingBean
|
||||
public DataSource dataSource() {
|
||||
@ -85,13 +74,6 @@ public class DynamicDataSourceAutoConfiguration implements InitializingBean {
|
||||
return dataSource;
|
||||
}
|
||||
|
||||
@Bean
|
||||
@ConditionalOnMissingBean
|
||||
public DataSourceInitEvent dataSourceInitEvent() {
|
||||
return new EncDataSourceInitEvent();
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void afterPropertiesSet() {
|
||||
if (!CollectionUtils.isEmpty(dataSourcePropertiesCustomizers)) {
|
||||
|
@ -5,11 +5,10 @@
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<parent>
|
||||
<groupId>com.baomidou</groupId>
|
||||
<artifactId>dynamic-datasource-spring-boot-starter-parent</artifactId>
|
||||
<artifactId>dynamic-datasource</artifactId>
|
||||
<version>4.0.0</version>
|
||||
</parent>
|
||||
|
||||
<groupId>com.kll.deploy</groupId>
|
||||
<artifactId>dynamic-datasource-spring-boot3-starter</artifactId>
|
||||
|
||||
<properties>
|
||||
@ -19,39 +18,7 @@
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>com.baomidou</groupId>
|
||||
<artifactId>dynamic-datasource-spring</artifactId>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>com.zaxxer</groupId>
|
||||
<artifactId>HikariCP-java7</artifactId>
|
||||
<optional>true</optional>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.alibaba</groupId>
|
||||
<artifactId>druid</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>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-web</artifactId>
|
||||
<optional>true</optional>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-aop</artifactId>
|
||||
<optional>true</optional>
|
||||
<artifactId>dynamic-datasource-spring-boot-common</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
|
@ -21,8 +21,6 @@ import com.baomidou.dynamic.datasource.annotation.DSTransactional;
|
||||
import com.baomidou.dynamic.datasource.aop.DynamicDataSourceAnnotationAdvisor;
|
||||
import com.baomidou.dynamic.datasource.aop.DynamicDataSourceAnnotationInterceptor;
|
||||
import com.baomidou.dynamic.datasource.aop.DynamicLocalTransactionInterceptor;
|
||||
import com.baomidou.dynamic.datasource.common.DynamicDataSourceProperties;
|
||||
import com.baomidou.dynamic.datasource.common.DynamicDatasourceAopProperties;
|
||||
import com.baomidou.dynamic.datasource.processor.DsJakartaHeaderProcessor;
|
||||
import com.baomidou.dynamic.datasource.processor.DsJakartaSessionProcessor;
|
||||
import com.baomidou.dynamic.datasource.processor.DsProcessor;
|
||||
|
@ -16,13 +16,6 @@
|
||||
package com.baomidou.dynamic.datasource.spring.boot.autoconfigure;
|
||||
|
||||
import com.baomidou.dynamic.datasource.DynamicRoutingDataSource;
|
||||
import com.baomidou.dynamic.datasource.common.DynamicDataSourceProperties;
|
||||
import com.baomidou.dynamic.datasource.common.DynamicDataSourcePropertiesCustomizer;
|
||||
import com.baomidou.dynamic.datasource.event.DataSourceInitEvent;
|
||||
import com.baomidou.dynamic.datasource.event.EncDataSourceInitEvent;
|
||||
import com.baomidou.dynamic.datasource.provider.DynamicDataSourceProvider;
|
||||
import com.baomidou.dynamic.datasource.provider.YmlDynamicDataSourceProvider;
|
||||
import com.baomidou.dynamic.datasource.strategy.DynamicDataSourceStrategy;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.InitializingBean;
|
||||
import org.springframework.beans.factory.ObjectProvider;
|
||||
@ -34,7 +27,6 @@ import org.springframework.boot.context.properties.EnableConfigurationProperties
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.context.annotation.Import;
|
||||
import org.springframework.core.annotation.Order;
|
||||
import org.springframework.util.CollectionUtils;
|
||||
|
||||
import javax.sql.DataSource;
|
||||
@ -44,16 +36,13 @@ import java.util.List;
|
||||
* 动态数据源核心自动配置类
|
||||
*
|
||||
* @author TaoYu Kanyuxia
|
||||
* @see DynamicDataSourceProvider
|
||||
* @see DynamicDataSourceStrategy
|
||||
* @see DynamicRoutingDataSource
|
||||
* @since 1.0.0
|
||||
*/
|
||||
@Slf4j
|
||||
@Configuration
|
||||
@EnableConfigurationProperties(DynamicDataSourceProperties.class)
|
||||
@AutoConfigureBefore(value = DataSourceAutoConfiguration.class, name = "com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure")
|
||||
@Import(value = {DynamicDataSourceCreatorAutoConfiguration.class, DynamicDataSourceAopConfiguration.class})
|
||||
@Import(value = {DynamicDataSourceCreatorAutoConfiguration.class, DynamicDataSourceAopConfiguration.class, DynamicDataSourceAssistConfiguration.class})
|
||||
@ConditionalOnProperty(prefix = DynamicDataSourceProperties.PREFIX, name = "enabled", havingValue = "true", matchIfMissing = true)
|
||||
public class DynamicDataSourceAutoConfiguration implements InitializingBean {
|
||||
|
||||
@ -68,12 +57,6 @@ public class DynamicDataSourceAutoConfiguration implements InitializingBean {
|
||||
this.dataSourcePropertiesCustomizers = dataSourcePropertiesCustomizers.getIfAvailable();
|
||||
}
|
||||
|
||||
@Bean
|
||||
@Order(0)
|
||||
public DynamicDataSourceProvider ymlDynamicDataSourceProvider() {
|
||||
return new YmlDynamicDataSourceProvider(properties.getDatasource());
|
||||
}
|
||||
|
||||
@Bean
|
||||
@ConditionalOnMissingBean
|
||||
public DataSource dataSource() {
|
||||
@ -86,13 +69,6 @@ public class DynamicDataSourceAutoConfiguration implements InitializingBean {
|
||||
return dataSource;
|
||||
}
|
||||
|
||||
@Bean
|
||||
@ConditionalOnMissingBean
|
||||
public DataSourceInitEvent dataSourceInitEvent() {
|
||||
return new EncDataSourceInitEvent();
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void afterPropertiesSet() {
|
||||
if (!CollectionUtils.isEmpty(dataSourcePropertiesCustomizers)) {
|
||||
|
@ -1,149 +0,0 @@
|
||||
/*
|
||||
* Copyright © 2018 organization baomidou
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package com.baomidou.dynamic.datasource.spring.boot.autoconfigure;
|
||||
|
||||
import cn.beecp.BeeDataSource;
|
||||
import com.alibaba.druid.pool.DruidDataSource;
|
||||
import com.baomidou.dynamic.datasource.creator.DataSourceCreator;
|
||||
import com.baomidou.dynamic.datasource.creator.DefaultDataSourceCreator;
|
||||
import com.baomidou.dynamic.datasource.creator.basic.BasicDataSourceCreator;
|
||||
import com.baomidou.dynamic.datasource.creator.beecp.BeeCpDataSourceCreator;
|
||||
import com.baomidou.dynamic.datasource.creator.dbcp.Dbcp2DataSourceCreator;
|
||||
import com.baomidou.dynamic.datasource.creator.druid.DruidDataSourceCreator;
|
||||
import com.baomidou.dynamic.datasource.creator.hikaricp.HikariDataSourceCreator;
|
||||
import com.baomidou.dynamic.datasource.creator.jndi.JndiDataSourceCreator;
|
||||
import com.zaxxer.hikari.HikariDataSource;
|
||||
import org.apache.commons.dbcp2.BasicDataSource;
|
||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
|
||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.context.annotation.Primary;
|
||||
import org.springframework.core.annotation.Order;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author TaoYu
|
||||
*/
|
||||
@Configuration
|
||||
public class DynamicDataSourceCreatorAutoConfiguration {
|
||||
|
||||
public static final int JNDI_ORDER = 1000;
|
||||
public static final int DRUID_ORDER = 2000;
|
||||
public static final int HIKARI_ORDER = 3000;
|
||||
public static final int BEECP_ORDER = 4000;
|
||||
public static final int DBCP2_ORDER = 5000;
|
||||
public static final int ATOMIKOS_ORDER = 6000;
|
||||
public static final int DEFAULT_ORDER = 7000;
|
||||
|
||||
@Primary
|
||||
@Bean
|
||||
@ConditionalOnMissingBean
|
||||
public DefaultDataSourceCreator dataSourceCreator(List<DataSourceCreator> dataSourceCreators) {
|
||||
DefaultDataSourceCreator defaultDataSourceCreator = new DefaultDataSourceCreator();
|
||||
defaultDataSourceCreator.setCreators(dataSourceCreators);
|
||||
return defaultDataSourceCreator;
|
||||
}
|
||||
|
||||
@Bean
|
||||
@Order(DEFAULT_ORDER)
|
||||
public BasicDataSourceCreator basicDataSourceCreator() {
|
||||
return new BasicDataSourceCreator();
|
||||
}
|
||||
|
||||
@Bean
|
||||
@Order(JNDI_ORDER)
|
||||
public JndiDataSourceCreator jndiDataSourceCreator() {
|
||||
return new JndiDataSourceCreator();
|
||||
}
|
||||
|
||||
/**
|
||||
* 存在Druid数据源时, 加入创建器
|
||||
*/
|
||||
@ConditionalOnClass(DruidDataSource.class)
|
||||
@Configuration
|
||||
static class DruidDataSourceCreatorConfiguration {
|
||||
|
||||
@Bean
|
||||
@Order(DRUID_ORDER)
|
||||
public DruidDataSourceCreator druidDataSourceCreator() {
|
||||
return new DruidDataSourceCreator();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 存在Hikari数据源时, 加入创建器
|
||||
*/
|
||||
@ConditionalOnClass(HikariDataSource.class)
|
||||
@Configuration
|
||||
static class HikariDataSourceCreatorConfiguration {
|
||||
@Bean
|
||||
@Order(HIKARI_ORDER)
|
||||
public HikariDataSourceCreator hikariDataSourceCreator() {
|
||||
return new HikariDataSourceCreator();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 存在BeeCp数据源时, 加入创建器
|
||||
*/
|
||||
@ConditionalOnClass(BeeDataSource.class)
|
||||
@Configuration
|
||||
static class BeeCpDataSourceCreatorConfiguration {
|
||||
|
||||
@Bean
|
||||
@Order(BEECP_ORDER)
|
||||
public BeeCpDataSourceCreator beeCpDataSourceCreator() {
|
||||
return new BeeCpDataSourceCreator();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 存在Dbcp2数据源时, 加入创建器
|
||||
*/
|
||||
@ConditionalOnClass(BasicDataSource.class)
|
||||
@Configuration
|
||||
static class Dbcp2DataSourceCreatorConfiguration {
|
||||
|
||||
@Bean
|
||||
@Order(DBCP2_ORDER)
|
||||
public Dbcp2DataSourceCreator dbcp2DataSourceCreator() {
|
||||
return new Dbcp2DataSourceCreator();
|
||||
}
|
||||
}
|
||||
|
||||
// /**
|
||||
// * 存在Atomikos数据源时, 加入创建器
|
||||
// */
|
||||
// @ConditionalOnClass({AtomikosDataSourceBean.class})
|
||||
// @Configuration
|
||||
// static class AtomikosDataSourceCreatorConfiguration {
|
||||
//
|
||||
// @Bean
|
||||
// @Order(ATOMIKOS_ORDER)
|
||||
// public AtomikosDataSourceCreator atomikosDataSourceCreator() {
|
||||
// return new AtomikosDataSourceCreator();
|
||||
// }
|
||||
//
|
||||
// @Bean
|
||||
// @ConditionalOnClass(TransactionFactory)
|
||||
// public TransactionFactory atomikosTransactionFactory() {
|
||||
// return new AtomikosTransactionFactory();
|
||||
// }
|
||||
// }
|
||||
|
||||
}
|
@ -5,15 +5,16 @@
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<parent>
|
||||
<groupId>com.baomidou</groupId>
|
||||
<artifactId>dynamic-datasource-spring-boot-starter-parent</artifactId>
|
||||
<artifactId>dynamic-datasource</artifactId>
|
||||
<version>4.0.0</version>
|
||||
</parent>
|
||||
<artifactId>dynamic-datasource-spring</artifactId>
|
||||
|
||||
<dependencies>
|
||||
<!--datasource-->
|
||||
<dependency>
|
||||
<groupId>com.baomidou</groupId>
|
||||
<artifactId>mybatis-plus</artifactId>
|
||||
<groupId>com.alibaba</groupId>
|
||||
<artifactId>druid</artifactId>
|
||||
<optional>true</optional>
|
||||
</dependency>
|
||||
<dependency>
|
||||
@ -21,21 +22,27 @@
|
||||
<artifactId>HikariCP-java7</artifactId>
|
||||
<optional>true</optional>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.alibaba</groupId>
|
||||
<artifactId>druid</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>
|
||||
</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>
|
||||
<optional>true</optional>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>p6spy</groupId>
|
||||
<artifactId>p6spy</artifactId>
|
||||
@ -46,21 +53,30 @@
|
||||
<artifactId>seata-rm-datasource</artifactId>
|
||||
<optional>true</optional>
|
||||
</dependency>
|
||||
<!--spring-->
|
||||
<dependency>
|
||||
<groupId>org.springframework</groupId>
|
||||
<artifactId>spring-core</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.springframework</groupId>
|
||||
<artifactId>spring-beans</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.springframework</groupId>
|
||||
<artifactId>spring-context</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.springframework</groupId>
|
||||
<artifactId>spring-jdbc</artifactId>
|
||||
<version>4.3.8.RELEASE</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot</artifactId>
|
||||
<version>${spring-boot-dependencies.version}</version>
|
||||
<optional>true</optional>
|
||||
<groupId>org.springframework</groupId>
|
||||
<artifactId>spring-aop</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-jta-atomikos</artifactId>
|
||||
<optional>true</optional>
|
||||
<groupId>org.springframework</groupId>
|
||||
<artifactId>spring-expression</artifactId>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
|
@ -0,0 +1,56 @@
|
||||
/*
|
||||
* Copyright © 2018 organization baomidou
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package com.baomidou.dynamic.datasource.common;
|
||||
|
||||
import com.baomidou.dynamic.datasource.enums.SeataMode;
|
||||
import com.baomidou.dynamic.datasource.toolkit.CryptoUtils;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
|
||||
/**
|
||||
* DataSourceGlobalProperty
|
||||
*
|
||||
* @author TaoYu
|
||||
* @since 4.0.0
|
||||
*/
|
||||
@Slf4j
|
||||
@Getter
|
||||
@Setter
|
||||
public class DataSourceGlobalProperty {
|
||||
|
||||
/**
|
||||
* 是否懒加载数据源
|
||||
*/
|
||||
private Boolean lazy = false;
|
||||
/**
|
||||
* /**
|
||||
* 是否使用p6spy输出,默认不输出
|
||||
*/
|
||||
private Boolean p6spy = false;
|
||||
/**
|
||||
* 是否使用开启seata,默认不开启
|
||||
*/
|
||||
private Boolean seata = false;
|
||||
/**
|
||||
* seata使用模式,默认AT
|
||||
*/
|
||||
private SeataMode seataMode = SeataMode.AT;
|
||||
/**
|
||||
* 全局默认publicKey
|
||||
*/
|
||||
private String publicKey = CryptoUtils.DEFAULT_PUBLIC_KEY_STRING;
|
||||
}
|
@ -21,9 +21,7 @@ import com.baomidou.dynamic.datasource.creator.dbcp.Dbcp2Config;
|
||||
import com.baomidou.dynamic.datasource.creator.druid.DruidConfig;
|
||||
import com.baomidou.dynamic.datasource.creator.hikaricp.HikariCpConfig;
|
||||
import lombok.Data;
|
||||
import lombok.experimental.Accessors;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.boot.context.properties.NestedConfigurationProperty;
|
||||
|
||||
import javax.sql.DataSource;
|
||||
|
||||
@ -33,7 +31,6 @@ import javax.sql.DataSource;
|
||||
*/
|
||||
@Slf4j
|
||||
@Data
|
||||
@Accessors(chain = true)
|
||||
public class DataSourceProperty {
|
||||
|
||||
/**
|
||||
@ -79,32 +76,26 @@ public class DataSourceProperty {
|
||||
/**
|
||||
* 初始化
|
||||
*/
|
||||
@NestedConfigurationProperty
|
||||
private DatasourceInitProperties init = new DatasourceInitProperties();
|
||||
/**
|
||||
* Druid参数配置
|
||||
*/
|
||||
@NestedConfigurationProperty
|
||||
private DruidConfig druid = new DruidConfig();
|
||||
/**
|
||||
* HikariCp参数配置
|
||||
*/
|
||||
@NestedConfigurationProperty
|
||||
private HikariCpConfig hikari = new HikariCpConfig();
|
||||
/**
|
||||
* BeeCp参数配置
|
||||
*/
|
||||
@NestedConfigurationProperty
|
||||
private BeeCpConfig beecp = new BeeCpConfig();
|
||||
/**
|
||||
* DBCP2参数配置
|
||||
*/
|
||||
@NestedConfigurationProperty
|
||||
private Dbcp2Config dbcp2 = new Dbcp2Config();
|
||||
/**
|
||||
* atomikos参数配置
|
||||
*/
|
||||
@NestedConfigurationProperty
|
||||
private AtomikosConfig atomikos = new AtomikosConfig();
|
||||
|
||||
/**
|
||||
|
@ -1,113 +0,0 @@
|
||||
/*
|
||||
* Copyright © 2018 organization baomidou
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package com.baomidou.dynamic.datasource.creator;
|
||||
|
||||
import com.baomidou.dynamic.datasource.common.DataSourceProperty;
|
||||
import com.baomidou.dynamic.datasource.common.DatasourceInitProperties;
|
||||
import com.baomidou.dynamic.datasource.common.DynamicDataSourceProperties;
|
||||
import com.baomidou.dynamic.datasource.ds.ItemDataSource;
|
||||
import com.baomidou.dynamic.datasource.enums.SeataMode;
|
||||
import com.baomidou.dynamic.datasource.event.DataSourceInitEvent;
|
||||
import com.baomidou.dynamic.datasource.support.ScriptRunner;
|
||||
import com.p6spy.engine.spy.P6DataSource;
|
||||
import io.seata.rm.datasource.DataSourceProxy;
|
||||
import io.seata.rm.datasource.xa.DataSourceProxyXA;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.util.StringUtils;
|
||||
|
||||
import javax.sql.DataSource;
|
||||
|
||||
/**
|
||||
* 抽象连接池创建器
|
||||
* <p>
|
||||
* 这里主要处理一些公共逻辑,如脚本和事件等
|
||||
*
|
||||
* @author TaoYu
|
||||
*/
|
||||
@Slf4j
|
||||
public abstract class AbstractDataSourceCreator implements DataSourceCreator {
|
||||
|
||||
@Autowired
|
||||
protected DynamicDataSourceProperties properties;
|
||||
@Autowired
|
||||
protected DataSourceInitEvent dataSourceInitEvent;
|
||||
|
||||
/**
|
||||
* 子类去实际创建连接池
|
||||
*
|
||||
* @param dataSourceProperty 数据源信息
|
||||
* @return 实际连接池
|
||||
*/
|
||||
public abstract DataSource doCreateDataSource(DataSourceProperty dataSourceProperty);
|
||||
|
||||
@Override
|
||||
public DataSource createDataSource(DataSourceProperty dataSourceProperty) {
|
||||
String publicKey = dataSourceProperty.getPublicKey();
|
||||
if (StringUtils.isEmpty(publicKey)) {
|
||||
publicKey = properties.getPublicKey();
|
||||
dataSourceProperty.setPublicKey(publicKey);
|
||||
}
|
||||
Boolean lazy = dataSourceProperty.getLazy();
|
||||
if (lazy == null) {
|
||||
lazy = properties.getLazy();
|
||||
dataSourceProperty.setLazy(lazy);
|
||||
}
|
||||
dataSourceInitEvent.beforeCreate(dataSourceProperty);
|
||||
DataSource dataSource = doCreateDataSource(dataSourceProperty);
|
||||
dataSourceInitEvent.afterCreate(dataSource);
|
||||
this.runScrip(dataSource, dataSourceProperty);
|
||||
return wrapDataSource(dataSource, dataSourceProperty);
|
||||
}
|
||||
|
||||
private void runScrip(DataSource dataSource, DataSourceProperty dataSourceProperty) {
|
||||
DatasourceInitProperties initProperty = dataSourceProperty.getInit();
|
||||
String schema = initProperty.getSchema();
|
||||
String data = initProperty.getData();
|
||||
if (StringUtils.hasText(schema) || StringUtils.hasText(data)) {
|
||||
ScriptRunner scriptRunner = new ScriptRunner(initProperty.isContinueOnError(), initProperty.getSeparator());
|
||||
if (StringUtils.hasText(schema)) {
|
||||
scriptRunner.runScript(dataSource, schema);
|
||||
}
|
||||
if (StringUtils.hasText(data)) {
|
||||
scriptRunner.runScript(dataSource, data);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private DataSource wrapDataSource(DataSource dataSource, DataSourceProperty dataSourceProperty) {
|
||||
String name = dataSourceProperty.getPoolName();
|
||||
DataSource targetDataSource = dataSource;
|
||||
|
||||
Boolean enabledP6spy = properties.getP6spy() && dataSourceProperty.getP6spy();
|
||||
if (enabledP6spy) {
|
||||
targetDataSource = new P6DataSource(dataSource);
|
||||
log.debug("dynamic-datasource [{}] wrap p6spy plugin", name);
|
||||
}
|
||||
|
||||
Boolean enabledSeata = properties.getSeata() && dataSourceProperty.getSeata();
|
||||
SeataMode seataMode = properties.getSeataMode();
|
||||
if (enabledSeata) {
|
||||
if (SeataMode.XA == seataMode) {
|
||||
targetDataSource = new DataSourceProxyXA(targetDataSource);
|
||||
} else {
|
||||
targetDataSource = new DataSourceProxy(targetDataSource);
|
||||
}
|
||||
log.debug("dynamic-datasource [{}] wrap seata plugin transaction mode ", name);
|
||||
}
|
||||
return new ItemDataSource(name, dataSource, targetDataSource, enabledP6spy, enabledSeata, seataMode);
|
||||
}
|
||||
}
|
@ -15,9 +15,19 @@
|
||||
*/
|
||||
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;
|
||||
import com.baomidou.dynamic.datasource.support.ScriptRunner;
|
||||
import com.p6spy.engine.spy.P6DataSource;
|
||||
import io.seata.rm.datasource.DataSourceProxy;
|
||||
import io.seata.rm.datasource.xa.DataSourceProxyXA;
|
||||
import lombok.Setter;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.util.StringUtils;
|
||||
|
||||
import javax.sql.DataSource;
|
||||
import java.util.List;
|
||||
@ -34,6 +44,9 @@ public class DefaultDataSourceCreator {
|
||||
|
||||
private List<DataSourceCreator> creators;
|
||||
|
||||
private DataSourceGlobalProperty properties;
|
||||
private DataSourceInitEvent dataSourceInitEvent;
|
||||
|
||||
public DataSource createDataSource(DataSourceProperty dataSourceProperty) {
|
||||
DataSourceCreator dataSourceCreator = null;
|
||||
for (DataSourceCreator creator : this.creators) {
|
||||
@ -45,7 +58,59 @@ public class DefaultDataSourceCreator {
|
||||
if (dataSourceCreator == null) {
|
||||
throw new IllegalStateException("creator must not be null,please check the DataSourceCreator");
|
||||
}
|
||||
return dataSourceCreator.createDataSource(dataSourceProperty);
|
||||
String publicKey = dataSourceProperty.getPublicKey();
|
||||
if (StringUtils.isEmpty(publicKey)) {
|
||||
publicKey = properties.getPublicKey();
|
||||
dataSourceProperty.setPublicKey(publicKey);
|
||||
}
|
||||
Boolean lazy = dataSourceProperty.getLazy();
|
||||
if (lazy == null) {
|
||||
lazy = properties.getLazy();
|
||||
dataSourceProperty.setLazy(lazy);
|
||||
}
|
||||
dataSourceInitEvent.beforeCreate(dataSourceProperty);
|
||||
DataSource dataSource = dataSourceCreator.createDataSource(dataSourceProperty);
|
||||
dataSourceInitEvent.afterCreate(dataSource);
|
||||
this.runScrip(dataSource, dataSourceProperty);
|
||||
return wrapDataSource(dataSource, dataSourceProperty);
|
||||
}
|
||||
|
||||
private void runScrip(DataSource dataSource, DataSourceProperty dataSourceProperty) {
|
||||
DatasourceInitProperties initProperty = dataSourceProperty.getInit();
|
||||
String schema = initProperty.getSchema();
|
||||
String data = initProperty.getData();
|
||||
if (StringUtils.hasText(schema) || StringUtils.hasText(data)) {
|
||||
ScriptRunner scriptRunner = new ScriptRunner(initProperty.isContinueOnError(), initProperty.getSeparator());
|
||||
if (StringUtils.hasText(schema)) {
|
||||
scriptRunner.runScript(dataSource, schema);
|
||||
}
|
||||
if (StringUtils.hasText(data)) {
|
||||
scriptRunner.runScript(dataSource, data);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private DataSource wrapDataSource(DataSource dataSource, DataSourceProperty dataSourceProperty) {
|
||||
String name = dataSourceProperty.getPoolName();
|
||||
DataSource targetDataSource = dataSource;
|
||||
|
||||
Boolean enabledP6spy = properties.getP6spy() && dataSourceProperty.getP6spy();
|
||||
if (enabledP6spy) {
|
||||
targetDataSource = new P6DataSource(dataSource);
|
||||
log.debug("dynamic-datasource [{}] wrap p6spy plugin", name);
|
||||
}
|
||||
|
||||
Boolean enabledSeata = properties.getSeata() && dataSourceProperty.getSeata();
|
||||
SeataMode seataMode = properties.getSeataMode();
|
||||
if (enabledSeata) {
|
||||
if (SeataMode.XA == seataMode) {
|
||||
targetDataSource = new DataSourceProxyXA(targetDataSource);
|
||||
} else {
|
||||
targetDataSource = new DataSourceProxy(targetDataSource);
|
||||
}
|
||||
log.debug("dynamic-datasource [{}] wrap seata plugin transaction mode ", name);
|
||||
}
|
||||
return new ItemDataSource(name, dataSource, targetDataSource, enabledP6spy, enabledSeata, seataMode);
|
||||
}
|
||||
|
||||
}
|
@ -15,15 +15,14 @@
|
||||
*/
|
||||
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.AbstractDataSourceCreator;
|
||||
import com.baomidou.dynamic.datasource.creator.DataSourceCreator;
|
||||
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 org.springframework.boot.jta.atomikos.AtomikosDataSourceBean;
|
||||
|
||||
import javax.sql.DataSource;
|
||||
import java.util.Properties;
|
||||
|
@ -16,7 +16,6 @@
|
||||
package com.baomidou.dynamic.datasource.creator.basic;
|
||||
|
||||
import com.baomidou.dynamic.datasource.common.DataSourceProperty;
|
||||
import com.baomidou.dynamic.datasource.creator.AbstractDataSourceCreator;
|
||||
import com.baomidou.dynamic.datasource.creator.DataSourceCreator;
|
||||
import com.baomidou.dynamic.datasource.exception.ErrorCreateDataSourceException;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
|
@ -18,7 +18,6 @@ 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.AbstractDataSourceCreator;
|
||||
import com.baomidou.dynamic.datasource.creator.DataSourceCreator;
|
||||
import com.baomidou.dynamic.datasource.toolkit.ConfigMergeCreator;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
|
@ -16,7 +16,6 @@
|
||||
package com.baomidou.dynamic.datasource.creator.dbcp;
|
||||
|
||||
import com.baomidou.dynamic.datasource.common.DataSourceProperty;
|
||||
import com.baomidou.dynamic.datasource.creator.AbstractDataSourceCreator;
|
||||
import com.baomidou.dynamic.datasource.creator.DataSourceCreator;
|
||||
import com.baomidou.dynamic.datasource.toolkit.ConfigMergeCreator;
|
||||
import lombok.SneakyThrows;
|
||||
|
@ -24,11 +24,9 @@ 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.AbstractDataSourceCreator;
|
||||
import com.baomidou.dynamic.datasource.creator.DataSourceCreator;
|
||||
import com.baomidou.dynamic.datasource.exception.ErrorCreateDataSourceException;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.InitializingBean;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.context.ApplicationContext;
|
||||
import org.springframework.util.StringUtils;
|
||||
@ -49,7 +47,7 @@ import static com.baomidou.dynamic.datasource.support.DdConstants.DRUID_DATASOUR
|
||||
* @since 2020/1/21
|
||||
*/
|
||||
@Slf4j
|
||||
public class DruidDataSourceCreator extends AbstractDataSourceCreator implements DataSourceCreator, InitializingBean {
|
||||
public class DruidDataSourceCreator implements DataSourceCreator {
|
||||
|
||||
private static Method configMethod = null;
|
||||
|
||||
@ -70,7 +68,7 @@ public class DruidDataSourceCreator extends AbstractDataSourceCreator implements
|
||||
private DruidConfig gConfig;
|
||||
|
||||
@Override
|
||||
public DataSource doCreateDataSource(DataSourceProperty dataSourceProperty) {
|
||||
public DataSource createDataSource(DataSourceProperty dataSourceProperty) {
|
||||
DruidDataSource dataSource = new DruidDataSource();
|
||||
dataSource.setUsername(dataSourceProperty.getUsername());
|
||||
dataSource.setPassword(dataSourceProperty.getPassword());
|
||||
@ -251,8 +249,4 @@ public class DruidDataSourceCreator extends AbstractDataSourceCreator implements
|
||||
return type == null || DRUID_DATASOURCE.equals(type.getName());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void afterPropertiesSet() throws Exception {
|
||||
gConfig = properties.getDruid();
|
||||
}
|
||||
}
|
@ -16,7 +16,6 @@
|
||||
package com.baomidou.dynamic.datasource.creator.hikaricp;
|
||||
|
||||
import com.baomidou.dynamic.datasource.common.DataSourceProperty;
|
||||
import com.baomidou.dynamic.datasource.creator.AbstractDataSourceCreator;
|
||||
import com.baomidou.dynamic.datasource.creator.DataSourceCreator;
|
||||
import com.baomidou.dynamic.datasource.toolkit.ConfigMergeCreator;
|
||||
import com.zaxxer.hikari.HikariConfig;
|
||||
|
@ -16,7 +16,6 @@
|
||||
package com.baomidou.dynamic.datasource.creator.jndi;
|
||||
|
||||
import com.baomidou.dynamic.datasource.common.DataSourceProperty;
|
||||
import com.baomidou.dynamic.datasource.creator.AbstractDataSourceCreator;
|
||||
import com.baomidou.dynamic.datasource.creator.DataSourceCreator;
|
||||
import org.springframework.jdbc.datasource.lookup.JndiDataSourceLookup;
|
||||
|
||||
|
8
pom.xml
8
pom.xml
@ -3,7 +3,7 @@
|
||||
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>
|
||||
<groupId>com.baomidou</groupId>
|
||||
<artifactId>dynamic-datasource-spring-boot-starter-parent</artifactId>
|
||||
<artifactId>dynamic-datasource</artifactId>
|
||||
<version>4.0.0</version>
|
||||
<packaging>pom</packaging>
|
||||
<name>${project.artifactId}</name>
|
||||
@ -12,6 +12,7 @@
|
||||
|
||||
<modules>
|
||||
<module>dynamic-datasource-spring</module>
|
||||
<module>dynamic-datasource-spring-boot-common</module>
|
||||
<module>dynamic-datasource-spring-boot-starter</module>
|
||||
<module>dynamic-datasource-spring-boot3-starter</module>
|
||||
</modules>
|
||||
@ -77,6 +78,11 @@
|
||||
<artifactId>dynamic-datasource-spring</artifactId>
|
||||
<version>4.0.0</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.baomidou</groupId>
|
||||
<artifactId>dynamic-datasource-spring-boot-common</artifactId>
|
||||
<version>4.0.0</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-dependencies</artifactId>
|
||||
|
Loading…
x
Reference in New Issue
Block a user