From 97869a5172bae0b1932815e28e843c594460cbcb Mon Sep 17 00:00:00 2001 From: TaoYu <332309254@qq.com> Date: Tue, 9 May 2023 14:58:15 +0800 Subject: [PATCH] feat: add spring-boot-common module --- dynamic-datasource-spring-boot-common/pom.xml | 51 ++++++ .../DynamicDataSourceAssistConfiguration.java | 58 +++++++ ...micDataSourceCreatorAutoConfiguration.java | 0 .../DynamicDataSourceProperties.java | 12 +- ...DynamicDataSourcePropertiesCustomizer.java | 2 - .../DynamicDatasourceAopProperties.java | 2 +- .../pom.xml | 37 +---- .../DynamicDataSourceAopConfiguration.java | 2 - .../DynamicDataSourceAutoConfiguration.java | 20 +-- .../pom.xml | 37 +---- .../DynamicDataSourceAopConfiguration.java | 2 - .../DynamicDataSourceAutoConfiguration.java | 26 +-- ...micDataSourceCreatorAutoConfiguration.java | 149 ------------------ dynamic-datasource-spring/pom.xml | 48 ++++-- .../common/DataSourceGlobalProperty.java | 56 +++++++ .../datasource/common/DataSourceProperty.java | 9 -- .../creator/AbstractDataSourceCreator.java | 113 ------------- .../creator/DefaultDataSourceCreator.java | 67 +++++++- .../atomikos/AtomikosDataSourceCreator.java | 3 +- .../creator/basic/BasicDataSourceCreator.java | 1 - .../creator/beecp/BeeCpDataSourceCreator.java | 1 - .../creator/dbcp/Dbcp2DataSourceCreator.java | 1 - .../creator/druid/DruidDataSourceCreator.java | 10 +- .../hikaricp/HikariDataSourceCreator.java | 1 - .../creator/jndi/JndiDataSourceCreator.java | 1 - pom.xml | 8 +- 26 files changed, 282 insertions(+), 435 deletions(-) create mode 100644 dynamic-datasource-spring-boot-common/pom.xml create mode 100644 dynamic-datasource-spring-boot-common/src/main/java/com/baomidou/dynamic/datasource/spring/boot/autoconfigure/DynamicDataSourceAssistConfiguration.java rename {dynamic-datasource-spring-boot-starter => dynamic-datasource-spring-boot-common}/src/main/java/com/baomidou/dynamic/datasource/spring/boot/autoconfigure/DynamicDataSourceCreatorAutoConfiguration.java (100%) rename {dynamic-datasource-spring/src/main/java/com/baomidou/dynamic/datasource/common => dynamic-datasource-spring-boot-common/src/main/java/com/baomidou/dynamic/datasource/spring/boot/autoconfigure}/DynamicDataSourceProperties.java (89%) rename {dynamic-datasource-spring-boot-starter => dynamic-datasource-spring-boot-common}/src/main/java/com/baomidou/dynamic/datasource/spring/boot/autoconfigure/DynamicDataSourcePropertiesCustomizer.java (93%) rename {dynamic-datasource-spring/src/main/java/com/baomidou/dynamic/datasource/common => dynamic-datasource-spring-boot-common/src/main/java/com/baomidou/dynamic/datasource/spring/boot/autoconfigure}/DynamicDatasourceAopProperties.java (94%) delete mode 100644 dynamic-datasource-spring-boot3-starter/src/main/java/com/baomidou/dynamic/datasource/spring/boot/autoconfigure/DynamicDataSourceCreatorAutoConfiguration.java create mode 100644 dynamic-datasource-spring/src/main/java/com/baomidou/dynamic/datasource/common/DataSourceGlobalProperty.java delete mode 100644 dynamic-datasource-spring/src/main/java/com/baomidou/dynamic/datasource/creator/AbstractDataSourceCreator.java diff --git a/dynamic-datasource-spring-boot-common/pom.xml b/dynamic-datasource-spring-boot-common/pom.xml new file mode 100644 index 0000000..f23fd70 --- /dev/null +++ b/dynamic-datasource-spring-boot-common/pom.xml @@ -0,0 +1,51 @@ + + + 4.0.0 + + com.baomidou + dynamic-datasource + 4.0.0 + + + dynamic-datasource-spring-boot-common + + + + com.baomidou + dynamic-datasource-spring + + + + com.zaxxer + HikariCP-java7 + true + + + com.alibaba + druid + true + + + com.github.chris2018998 + beecp + true + + + org.apache.commons + commons-dbcp2 + true + + + + org.springframework.boot + spring-boot-starter-aop + + + org.springframework.boot + spring-boot-configuration-processor + true + + + \ No newline at end of file diff --git a/dynamic-datasource-spring-boot-common/src/main/java/com/baomidou/dynamic/datasource/spring/boot/autoconfigure/DynamicDataSourceAssistConfiguration.java b/dynamic-datasource-spring-boot-common/src/main/java/com/baomidou/dynamic/datasource/spring/boot/autoconfigure/DynamicDataSourceAssistConfiguration.java new file mode 100644 index 0000000..926cd1a --- /dev/null +++ b/dynamic-datasource-spring-boot-common/src/main/java/com/baomidou/dynamic/datasource/spring/boot/autoconfigure/DynamicDataSourceAssistConfiguration.java @@ -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(); + } +} \ No newline at end of file diff --git a/dynamic-datasource-spring-boot-starter/src/main/java/com/baomidou/dynamic/datasource/spring/boot/autoconfigure/DynamicDataSourceCreatorAutoConfiguration.java b/dynamic-datasource-spring-boot-common/src/main/java/com/baomidou/dynamic/datasource/spring/boot/autoconfigure/DynamicDataSourceCreatorAutoConfiguration.java similarity index 100% rename from dynamic-datasource-spring-boot-starter/src/main/java/com/baomidou/dynamic/datasource/spring/boot/autoconfigure/DynamicDataSourceCreatorAutoConfiguration.java rename to dynamic-datasource-spring-boot-common/src/main/java/com/baomidou/dynamic/datasource/spring/boot/autoconfigure/DynamicDataSourceCreatorAutoConfiguration.java diff --git a/dynamic-datasource-spring/src/main/java/com/baomidou/dynamic/datasource/common/DynamicDataSourceProperties.java b/dynamic-datasource-spring-boot-common/src/main/java/com/baomidou/dynamic/datasource/spring/boot/autoconfigure/DynamicDataSourceProperties.java similarity index 89% rename from dynamic-datasource-spring/src/main/java/com/baomidou/dynamic/datasource/common/DynamicDataSourceProperties.java rename to dynamic-datasource-spring-boot-common/src/main/java/com/baomidou/dynamic/datasource/spring/boot/autoconfigure/DynamicDataSourceProperties.java index 13e6484..1e8046f 100644 --- a/dynamic-datasource-spring/src/main/java/com/baomidou/dynamic/datasource/common/DynamicDataSourceProperties.java +++ b/dynamic-datasource-spring-boot-common/src/main/java/com/baomidou/dynamic/datasource/spring/boot/autoconfigure/DynamicDataSourceProperties.java @@ -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(); } \ No newline at end of file diff --git a/dynamic-datasource-spring-boot-starter/src/main/java/com/baomidou/dynamic/datasource/spring/boot/autoconfigure/DynamicDataSourcePropertiesCustomizer.java b/dynamic-datasource-spring-boot-common/src/main/java/com/baomidou/dynamic/datasource/spring/boot/autoconfigure/DynamicDataSourcePropertiesCustomizer.java similarity index 93% rename from dynamic-datasource-spring-boot-starter/src/main/java/com/baomidou/dynamic/datasource/spring/boot/autoconfigure/DynamicDataSourcePropertiesCustomizer.java rename to dynamic-datasource-spring-boot-common/src/main/java/com/baomidou/dynamic/datasource/spring/boot/autoconfigure/DynamicDataSourcePropertiesCustomizer.java index 8a22a78..c8e042d 100644 --- a/dynamic-datasource-spring-boot-starter/src/main/java/com/baomidou/dynamic/datasource/spring/boot/autoconfigure/DynamicDataSourcePropertiesCustomizer.java +++ b/dynamic-datasource-spring-boot-common/src/main/java/com/baomidou/dynamic/datasource/spring/boot/autoconfigure/DynamicDataSourcePropertiesCustomizer.java @@ -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 diff --git a/dynamic-datasource-spring/src/main/java/com/baomidou/dynamic/datasource/common/DynamicDatasourceAopProperties.java b/dynamic-datasource-spring-boot-common/src/main/java/com/baomidou/dynamic/datasource/spring/boot/autoconfigure/DynamicDatasourceAopProperties.java similarity index 94% rename from dynamic-datasource-spring/src/main/java/com/baomidou/dynamic/datasource/common/DynamicDatasourceAopProperties.java rename to dynamic-datasource-spring-boot-common/src/main/java/com/baomidou/dynamic/datasource/spring/boot/autoconfigure/DynamicDatasourceAopProperties.java index e580bb6..dfaac56 100644 --- a/dynamic-datasource-spring/src/main/java/com/baomidou/dynamic/datasource/common/DynamicDatasourceAopProperties.java +++ b/dynamic-datasource-spring-boot-common/src/main/java/com/baomidou/dynamic/datasource/spring/boot/autoconfigure/DynamicDatasourceAopProperties.java @@ -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; diff --git a/dynamic-datasource-spring-boot-starter/pom.xml b/dynamic-datasource-spring-boot-starter/pom.xml index f5a6101..71339bd 100644 --- a/dynamic-datasource-spring-boot-starter/pom.xml +++ b/dynamic-datasource-spring-boot-starter/pom.xml @@ -5,49 +5,16 @@ 4.0.0 com.baomidou - dynamic-datasource-spring-boot-starter-parent + dynamic-datasource 4.0.0 - com.kll.deploy dynamic-datasource-spring-boot-starter com.baomidou - dynamic-datasource-spring - - - - com.zaxxer - HikariCP-java7 - true - - - com.alibaba - druid - true - - - com.github.chris2018998 - beecp - true - - - org.apache.commons - commons-dbcp2 - true - - - - org.springframework.boot - spring-boot-starter-web - true - - - org.springframework.boot - spring-boot-starter-aop - true + dynamic-datasource-spring-boot-common org.springframework.boot diff --git a/dynamic-datasource-spring-boot-starter/src/main/java/com/baomidou/dynamic/datasource/spring/boot/autoconfigure/DynamicDataSourceAopConfiguration.java b/dynamic-datasource-spring-boot-starter/src/main/java/com/baomidou/dynamic/datasource/spring/boot/autoconfigure/DynamicDataSourceAopConfiguration.java index 9ea68d0..d5f8dfd 100644 --- a/dynamic-datasource-spring-boot-starter/src/main/java/com/baomidou/dynamic/datasource/spring/boot/autoconfigure/DynamicDataSourceAopConfiguration.java +++ b/dynamic-datasource-spring-boot-starter/src/main/java/com/baomidou/dynamic/datasource/spring/boot/autoconfigure/DynamicDataSourceAopConfiguration.java @@ -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; diff --git a/dynamic-datasource-spring-boot-starter/src/main/java/com/baomidou/dynamic/datasource/spring/boot/autoconfigure/DynamicDataSourceAutoConfiguration.java b/dynamic-datasource-spring-boot-starter/src/main/java/com/baomidou/dynamic/datasource/spring/boot/autoconfigure/DynamicDataSourceAutoConfiguration.java index 42f4818..e3c76f5 100644 --- a/dynamic-datasource-spring-boot-starter/src/main/java/com/baomidou/dynamic/datasource/spring/boot/autoconfigure/DynamicDataSourceAutoConfiguration.java +++ b/dynamic-datasource-spring-boot-starter/src/main/java/com/baomidou/dynamic/datasource/spring/boot/autoconfigure/DynamicDataSourceAutoConfiguration.java @@ -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)) { diff --git a/dynamic-datasource-spring-boot3-starter/pom.xml b/dynamic-datasource-spring-boot3-starter/pom.xml index ff10aef..7a0b112 100644 --- a/dynamic-datasource-spring-boot3-starter/pom.xml +++ b/dynamic-datasource-spring-boot3-starter/pom.xml @@ -5,11 +5,10 @@ 4.0.0 com.baomidou - dynamic-datasource-spring-boot-starter-parent + dynamic-datasource 4.0.0 - com.kll.deploy dynamic-datasource-spring-boot3-starter @@ -19,39 +18,7 @@ com.baomidou - dynamic-datasource-spring - - - - com.zaxxer - HikariCP-java7 - true - - - com.alibaba - druid - true - - - com.github.chris2018998 - beecp - true - - - org.apache.commons - commons-dbcp2 - true - - - - org.springframework.boot - spring-boot-starter-web - true - - - org.springframework.boot - spring-boot-starter-aop - true + dynamic-datasource-spring-boot-common org.springframework.boot diff --git a/dynamic-datasource-spring-boot3-starter/src/main/java/com/baomidou/dynamic/datasource/spring/boot/autoconfigure/DynamicDataSourceAopConfiguration.java b/dynamic-datasource-spring-boot3-starter/src/main/java/com/baomidou/dynamic/datasource/spring/boot/autoconfigure/DynamicDataSourceAopConfiguration.java index cfe46b3..acbcf13 100644 --- a/dynamic-datasource-spring-boot3-starter/src/main/java/com/baomidou/dynamic/datasource/spring/boot/autoconfigure/DynamicDataSourceAopConfiguration.java +++ b/dynamic-datasource-spring-boot3-starter/src/main/java/com/baomidou/dynamic/datasource/spring/boot/autoconfigure/DynamicDataSourceAopConfiguration.java @@ -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; diff --git a/dynamic-datasource-spring-boot3-starter/src/main/java/com/baomidou/dynamic/datasource/spring/boot/autoconfigure/DynamicDataSourceAutoConfiguration.java b/dynamic-datasource-spring-boot3-starter/src/main/java/com/baomidou/dynamic/datasource/spring/boot/autoconfigure/DynamicDataSourceAutoConfiguration.java index 2769a61..5999241 100644 --- a/dynamic-datasource-spring-boot3-starter/src/main/java/com/baomidou/dynamic/datasource/spring/boot/autoconfigure/DynamicDataSourceAutoConfiguration.java +++ b/dynamic-datasource-spring-boot3-starter/src/main/java/com/baomidou/dynamic/datasource/spring/boot/autoconfigure/DynamicDataSourceAutoConfiguration.java @@ -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)) { diff --git a/dynamic-datasource-spring-boot3-starter/src/main/java/com/baomidou/dynamic/datasource/spring/boot/autoconfigure/DynamicDataSourceCreatorAutoConfiguration.java b/dynamic-datasource-spring-boot3-starter/src/main/java/com/baomidou/dynamic/datasource/spring/boot/autoconfigure/DynamicDataSourceCreatorAutoConfiguration.java deleted file mode 100644 index ac86b8a..0000000 --- a/dynamic-datasource-spring-boot3-starter/src/main/java/com/baomidou/dynamic/datasource/spring/boot/autoconfigure/DynamicDataSourceCreatorAutoConfiguration.java +++ /dev/null @@ -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 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(); -// } -// } - -} \ No newline at end of file diff --git a/dynamic-datasource-spring/pom.xml b/dynamic-datasource-spring/pom.xml index 0315ca0..a5c8830 100644 --- a/dynamic-datasource-spring/pom.xml +++ b/dynamic-datasource-spring/pom.xml @@ -5,15 +5,16 @@ 4.0.0 com.baomidou - dynamic-datasource-spring-boot-starter-parent + dynamic-datasource 4.0.0 dynamic-datasource-spring + - com.baomidou - mybatis-plus + com.alibaba + druid true @@ -21,21 +22,27 @@ HikariCP-java7 true - - com.alibaba - druid - true - com.github.chris2018998 beecp true + + com.atomikos + transactions-jdbc + true + + org.apache.commons commons-dbcp2 true + + com.baomidou + mybatis-plus + true + p6spy p6spy @@ -46,21 +53,30 @@ seata-rm-datasource true + + + org.springframework + spring-core + + + org.springframework + spring-beans + + + org.springframework + spring-context + org.springframework spring-jdbc - 4.3.8.RELEASE - org.springframework.boot - spring-boot - ${spring-boot-dependencies.version} - true + org.springframework + spring-aop - org.springframework.boot - spring-boot-starter-jta-atomikos - true + org.springframework + spring-expression diff --git a/dynamic-datasource-spring/src/main/java/com/baomidou/dynamic/datasource/common/DataSourceGlobalProperty.java b/dynamic-datasource-spring/src/main/java/com/baomidou/dynamic/datasource/common/DataSourceGlobalProperty.java new file mode 100644 index 0000000..fcbf6b6 --- /dev/null +++ b/dynamic-datasource-spring/src/main/java/com/baomidou/dynamic/datasource/common/DataSourceGlobalProperty.java @@ -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; +} \ No newline at end of file diff --git a/dynamic-datasource-spring/src/main/java/com/baomidou/dynamic/datasource/common/DataSourceProperty.java b/dynamic-datasource-spring/src/main/java/com/baomidou/dynamic/datasource/common/DataSourceProperty.java index 3b499ce..4724bf8 100644 --- a/dynamic-datasource-spring/src/main/java/com/baomidou/dynamic/datasource/common/DataSourceProperty.java +++ b/dynamic-datasource-spring/src/main/java/com/baomidou/dynamic/datasource/common/DataSourceProperty.java @@ -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(); /** diff --git a/dynamic-datasource-spring/src/main/java/com/baomidou/dynamic/datasource/creator/AbstractDataSourceCreator.java b/dynamic-datasource-spring/src/main/java/com/baomidou/dynamic/datasource/creator/AbstractDataSourceCreator.java deleted file mode 100644 index 3150868..0000000 --- a/dynamic-datasource-spring/src/main/java/com/baomidou/dynamic/datasource/creator/AbstractDataSourceCreator.java +++ /dev/null @@ -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; - -/** - * 抽象连接池创建器 - *

- * 这里主要处理一些公共逻辑,如脚本和事件等 - * - * @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); - } -} \ No newline at end of file diff --git a/dynamic-datasource-spring/src/main/java/com/baomidou/dynamic/datasource/creator/DefaultDataSourceCreator.java b/dynamic-datasource-spring/src/main/java/com/baomidou/dynamic/datasource/creator/DefaultDataSourceCreator.java index aee9b4f..ac74c40 100644 --- a/dynamic-datasource-spring/src/main/java/com/baomidou/dynamic/datasource/creator/DefaultDataSourceCreator.java +++ b/dynamic-datasource-spring/src/main/java/com/baomidou/dynamic/datasource/creator/DefaultDataSourceCreator.java @@ -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 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); } } \ No newline at end of file diff --git a/dynamic-datasource-spring/src/main/java/com/baomidou/dynamic/datasource/creator/atomikos/AtomikosDataSourceCreator.java b/dynamic-datasource-spring/src/main/java/com/baomidou/dynamic/datasource/creator/atomikos/AtomikosDataSourceCreator.java index af743f5..0c044dc 100644 --- a/dynamic-datasource-spring/src/main/java/com/baomidou/dynamic/datasource/creator/atomikos/AtomikosDataSourceCreator.java +++ b/dynamic-datasource-spring/src/main/java/com/baomidou/dynamic/datasource/creator/atomikos/AtomikosDataSourceCreator.java @@ -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; diff --git a/dynamic-datasource-spring/src/main/java/com/baomidou/dynamic/datasource/creator/basic/BasicDataSourceCreator.java b/dynamic-datasource-spring/src/main/java/com/baomidou/dynamic/datasource/creator/basic/BasicDataSourceCreator.java index 23055b7..3c58a18 100644 --- a/dynamic-datasource-spring/src/main/java/com/baomidou/dynamic/datasource/creator/basic/BasicDataSourceCreator.java +++ b/dynamic-datasource-spring/src/main/java/com/baomidou/dynamic/datasource/creator/basic/BasicDataSourceCreator.java @@ -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; diff --git a/dynamic-datasource-spring/src/main/java/com/baomidou/dynamic/datasource/creator/beecp/BeeCpDataSourceCreator.java b/dynamic-datasource-spring/src/main/java/com/baomidou/dynamic/datasource/creator/beecp/BeeCpDataSourceCreator.java index db563ab..a791640 100644 --- a/dynamic-datasource-spring/src/main/java/com/baomidou/dynamic/datasource/creator/beecp/BeeCpDataSourceCreator.java +++ b/dynamic-datasource-spring/src/main/java/com/baomidou/dynamic/datasource/creator/beecp/BeeCpDataSourceCreator.java @@ -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; diff --git a/dynamic-datasource-spring/src/main/java/com/baomidou/dynamic/datasource/creator/dbcp/Dbcp2DataSourceCreator.java b/dynamic-datasource-spring/src/main/java/com/baomidou/dynamic/datasource/creator/dbcp/Dbcp2DataSourceCreator.java index 5b29816..2133305 100644 --- a/dynamic-datasource-spring/src/main/java/com/baomidou/dynamic/datasource/creator/dbcp/Dbcp2DataSourceCreator.java +++ b/dynamic-datasource-spring/src/main/java/com/baomidou/dynamic/datasource/creator/dbcp/Dbcp2DataSourceCreator.java @@ -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; diff --git a/dynamic-datasource-spring/src/main/java/com/baomidou/dynamic/datasource/creator/druid/DruidDataSourceCreator.java b/dynamic-datasource-spring/src/main/java/com/baomidou/dynamic/datasource/creator/druid/DruidDataSourceCreator.java index 15d2fbc..2d240c0 100644 --- a/dynamic-datasource-spring/src/main/java/com/baomidou/dynamic/datasource/creator/druid/DruidDataSourceCreator.java +++ b/dynamic-datasource-spring/src/main/java/com/baomidou/dynamic/datasource/creator/druid/DruidDataSourceCreator.java @@ -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(); - } } \ No newline at end of file diff --git a/dynamic-datasource-spring/src/main/java/com/baomidou/dynamic/datasource/creator/hikaricp/HikariDataSourceCreator.java b/dynamic-datasource-spring/src/main/java/com/baomidou/dynamic/datasource/creator/hikaricp/HikariDataSourceCreator.java index 895b386..f2ef5ef 100644 --- a/dynamic-datasource-spring/src/main/java/com/baomidou/dynamic/datasource/creator/hikaricp/HikariDataSourceCreator.java +++ b/dynamic-datasource-spring/src/main/java/com/baomidou/dynamic/datasource/creator/hikaricp/HikariDataSourceCreator.java @@ -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; diff --git a/dynamic-datasource-spring/src/main/java/com/baomidou/dynamic/datasource/creator/jndi/JndiDataSourceCreator.java b/dynamic-datasource-spring/src/main/java/com/baomidou/dynamic/datasource/creator/jndi/JndiDataSourceCreator.java index dd0e4a1..a94ae71 100644 --- a/dynamic-datasource-spring/src/main/java/com/baomidou/dynamic/datasource/creator/jndi/JndiDataSourceCreator.java +++ b/dynamic-datasource-spring/src/main/java/com/baomidou/dynamic/datasource/creator/jndi/JndiDataSourceCreator.java @@ -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; diff --git a/pom.xml b/pom.xml index 08499f4..dd8bcf9 100644 --- a/pom.xml +++ b/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"> 4.0.0 com.baomidou - dynamic-datasource-spring-boot-starter-parent + dynamic-datasource 4.0.0 pom ${project.artifactId} @@ -12,6 +12,7 @@ dynamic-datasource-spring + dynamic-datasource-spring-boot-common dynamic-datasource-spring-boot-starter dynamic-datasource-spring-boot3-starter @@ -77,6 +78,11 @@ dynamic-datasource-spring 4.0.0 + + com.baomidou + dynamic-datasource-spring-boot-common + 4.0.0 + org.springframework.boot spring-boot-dependencies