From 2dbb3fa731a43a71ca76e46f16276d37cb427197 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=AE=B7=E6=9E=97?= Date: Fri, 9 Oct 2020 09:12:43 +0800 Subject: [PATCH] =?UTF-8?q?=E3=80=90A=E3=80=91=E6=96=B0=E5=A2=9E=E8=AF=BB?= =?UTF-8?q?=E5=86=99=E5=88=86=E7=A6=BBstarter?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- easy-dependencies/pom.xml | 10 +++- .../pom.xml | 24 +++++++++ ...DatasourceSeparationAutoConfiguration.java | 52 +++++++++++++++++++ .../main/resources/META-INF/spring.factories | 2 + easy-spring-boot-starters/pom.xml | 1 + .../datasource/DynamicRoutingDataSource.java | 4 +- easy-spring-boot/pom.xml | 2 +- 7 files changed, 90 insertions(+), 5 deletions(-) create mode 100644 easy-spring-boot-starters/easy-spring-boot-starter-wr-separation/pom.xml create mode 100644 easy-spring-boot-starters/easy-spring-boot-starter-wr-separation/src/main/java/cn/org/easysite/spring/boot/wr/separation/autoconfigure/DatasourceSeparationAutoConfiguration.java create mode 100644 easy-spring-boot-starters/easy-spring-boot-starter-wr-separation/src/main/resources/META-INF/spring.factories diff --git a/easy-dependencies/pom.xml b/easy-dependencies/pom.xml index b1cdc73..aa09621 100644 --- a/easy-dependencies/pom.xml +++ b/easy-dependencies/pom.xml @@ -15,7 +15,7 @@ 1.8 1.8 2.3.4.RELEASE - 2.3 + 2.3.0 Hoxton.SR5 1.1.24 3.13.5 @@ -31,7 +31,7 @@ 3.0.0 2.0.5 2.3.2 - 1.3 + 1.3.0 1.2.73 1.4.13 2.1.3 @@ -119,6 +119,12 @@ ${revision} + + cn.org.easysite + easy-spring-boot-starter-wr-separation + ${revision} + + cn.org.easysite easy-spring-boot-starters diff --git a/easy-spring-boot-starters/easy-spring-boot-starter-wr-separation/pom.xml b/easy-spring-boot-starters/easy-spring-boot-starter-wr-separation/pom.xml new file mode 100644 index 0000000..c04b9c4 --- /dev/null +++ b/easy-spring-boot-starters/easy-spring-boot-starter-wr-separation/pom.xml @@ -0,0 +1,24 @@ + + + + easy-spring-boot-starters + cn.org.easysite + ${revision} + + 4.0.0 + + easy-spring-boot-starter-wr-separation + + + + org.springframework.boot + spring-boot-starter + + + cn.org.easysite + easy-spring-boot-wr-separation + + + diff --git a/easy-spring-boot-starters/easy-spring-boot-starter-wr-separation/src/main/java/cn/org/easysite/spring/boot/wr/separation/autoconfigure/DatasourceSeparationAutoConfiguration.java b/easy-spring-boot-starters/easy-spring-boot-starter-wr-separation/src/main/java/cn/org/easysite/spring/boot/wr/separation/autoconfigure/DatasourceSeparationAutoConfiguration.java new file mode 100644 index 0000000..e071247 --- /dev/null +++ b/easy-spring-boot-starters/easy-spring-boot-starter-wr-separation/src/main/java/cn/org/easysite/spring/boot/wr/separation/autoconfigure/DatasourceSeparationAutoConfiguration.java @@ -0,0 +1,52 @@ +/* + * @Copyright : Copyright (c) 2020 + * @Company : EasySite Technology 阿富汗 Co. Ltd. + */ +package cn.org.easysite.spring.boot.wr.separation.autoconfigure; + +import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.EnableAspectJAutoProxy; +import org.springframework.context.annotation.Import; +import org.springframework.context.annotation.Primary; +import org.springframework.jdbc.datasource.DataSourceTransactionManager; +import org.springframework.transaction.PlatformTransactionManager; + +import java.util.HashMap; +import java.util.Map; + +import javax.sql.DataSource; + +import cn.org.easysite.spring.boot.wr.separation.datasource.DynamicRoutingDataSource; +import cn.org.easysite.spring.boot.wr.separation.processor.TransactionalBeanPostProcessor; + +/** + * @author : 潘多拉 + * @version : 1.0 + * @date : 2020/10/9 9:02 上午 + * @link : cn.org.easysite.spring.boot.wr.separation.autoconfigure.DatasourceSeparationAutoConfiguration + */ +@Configuration +@EnableAspectJAutoProxy +@Import(TransactionalBeanPostProcessor.class) +public class DatasourceSeparationAutoConfiguration { + + @Bean(name = "transactionManager") + @ConditionalOnMissingBean(PlatformTransactionManager.class) + public PlatformTransactionManager platformTransactionManager(DataSource dynamicRoutingDataSource) { + return new DataSourceTransactionManager(dynamicRoutingDataSource); + } + + @Bean(name = "dynamicRoutingDataSource") + @Primary + public DynamicRoutingDataSource dynamicRoutingDataSource(DataSource writeDataSource, DataSource readDataSource) { + DynamicRoutingDataSource dynamicDataSource = new DynamicRoutingDataSource(); + Map dataSourceMap = new HashMap<>(); + dataSourceMap.put("writeDataSource", writeDataSource); + dataSourceMap.put("readDataSource", readDataSource); + dynamicDataSource.setTargetDataSources(dataSourceMap); + dynamicDataSource.setDefaultTargetDataSource(writeDataSource); + return dynamicDataSource; + } +} diff --git a/easy-spring-boot-starters/easy-spring-boot-starter-wr-separation/src/main/resources/META-INF/spring.factories b/easy-spring-boot-starters/easy-spring-boot-starter-wr-separation/src/main/resources/META-INF/spring.factories new file mode 100644 index 0000000..94553bf --- /dev/null +++ b/easy-spring-boot-starters/easy-spring-boot-starter-wr-separation/src/main/resources/META-INF/spring.factories @@ -0,0 +1,2 @@ +org.springframework.boot.autoconfigure.EnableAutoConfiguration=\ +cn.org.easysite.spring.boot.wr.separation.autoconfigure.DatasourceSeparationAutoConfiguration diff --git a/easy-spring-boot-starters/pom.xml b/easy-spring-boot-starters/pom.xml index fe80232..34d4f3d 100644 --- a/easy-spring-boot-starters/pom.xml +++ b/easy-spring-boot-starters/pom.xml @@ -17,6 +17,7 @@ easy-spring-cloud-starter-feign easy-spring-boot-starter-dlock easy-spring-boot-starter-data-jpa + easy-spring-boot-starter-wr-separation easy-spring-boot-starters diff --git a/easy-spring-boot-wr-separation/src/main/java/cn/org/easysite/spring/boot/wr/separation/datasource/DynamicRoutingDataSource.java b/easy-spring-boot-wr-separation/src/main/java/cn/org/easysite/spring/boot/wr/separation/datasource/DynamicRoutingDataSource.java index 4b60010..d1c6e73 100644 --- a/easy-spring-boot-wr-separation/src/main/java/cn/org/easysite/spring/boot/wr/separation/datasource/DynamicRoutingDataSource.java +++ b/easy-spring-boot-wr-separation/src/main/java/cn/org/easysite/spring/boot/wr/separation/datasource/DynamicRoutingDataSource.java @@ -19,9 +19,9 @@ public class DynamicRoutingDataSource extends AbstractRoutingDataSource { /** * 读或写 */ - READONLY("slaverDataSource"), + READONLY("readDataSource"), - WRITE("masterDataSource"); + WRITE("writeDataSource"); private String name; diff --git a/easy-spring-boot/pom.xml b/easy-spring-boot/pom.xml index 1daeae2..938af59 100644 --- a/easy-spring-boot/pom.xml +++ b/easy-spring-boot/pom.xml @@ -23,7 +23,7 @@ cn.org.easysite - easy-swagger-spring-boot-starter + easy-spring-boot-starter-swagger org.aspectj