From c2fea043785159068c7dc3c2fa2e0f4de6f3903a Mon Sep 17 00:00:00 2001 From: zhouhao Date: Thu, 21 Dec 2017 13:51:55 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E5=8A=A8=E6=80=81=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E6=BA=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...opDataSourceSwitcherAutoConfiguration.java | 2 +- .../DynamicDataSourceAutoConfiguration.java | 10 +++--- ...pringContextDynamicDataSourceService.java} | 36 ++++++------------- 3 files changed, 16 insertions(+), 32 deletions(-) rename hsweb-datasource/hsweb-datasource-api/src/main/java/org/hswebframework/web/datasource/{starter => }/AopDataSourceSwitcherAutoConfiguration.java (98%) rename hsweb-datasource/hsweb-datasource-api/src/main/java/org/hswebframework/web/datasource/service/{InMemoryDynamicDataSourceService.java => InSpringContextDynamicDataSourceService.java} (54%) diff --git a/hsweb-datasource/hsweb-datasource-api/src/main/java/org/hswebframework/web/datasource/starter/AopDataSourceSwitcherAutoConfiguration.java b/hsweb-datasource/hsweb-datasource-api/src/main/java/org/hswebframework/web/datasource/AopDataSourceSwitcherAutoConfiguration.java similarity index 98% rename from hsweb-datasource/hsweb-datasource-api/src/main/java/org/hswebframework/web/datasource/starter/AopDataSourceSwitcherAutoConfiguration.java rename to hsweb-datasource/hsweb-datasource-api/src/main/java/org/hswebframework/web/datasource/AopDataSourceSwitcherAutoConfiguration.java index a61a660f3..2cbca2440 100644 --- a/hsweb-datasource/hsweb-datasource-api/src/main/java/org/hswebframework/web/datasource/starter/AopDataSourceSwitcherAutoConfiguration.java +++ b/hsweb-datasource/hsweb-datasource-api/src/main/java/org/hswebframework/web/datasource/AopDataSourceSwitcherAutoConfiguration.java @@ -1,4 +1,4 @@ -package org.hswebframework.web.datasource.starter; +package org.hswebframework.web.datasource; import org.aopalliance.intercept.MethodInterceptor; import org.hswebframework.web.AopUtils; diff --git a/hsweb-datasource/hsweb-datasource-api/src/main/java/org/hswebframework/web/datasource/DynamicDataSourceAutoConfiguration.java b/hsweb-datasource/hsweb-datasource-api/src/main/java/org/hswebframework/web/datasource/DynamicDataSourceAutoConfiguration.java index 96e743c53..1fd0a9172 100644 --- a/hsweb-datasource/hsweb-datasource-api/src/main/java/org/hswebframework/web/datasource/DynamicDataSourceAutoConfiguration.java +++ b/hsweb-datasource/hsweb-datasource-api/src/main/java/org/hswebframework/web/datasource/DynamicDataSourceAutoConfiguration.java @@ -3,15 +3,13 @@ package org.hswebframework.web.datasource; import org.hswebframework.ezorm.rdb.executor.SqlExecutor; import org.hswebframework.web.datasource.config.DynamicDataSourceConfigRepository; import org.hswebframework.web.datasource.config.InSpringDynamicDataSourceConfig; -import org.hswebframework.web.datasource.service.InMemoryDynamicDataSourceService; +import org.hswebframework.web.datasource.service.InSpringContextDynamicDataSourceService; import org.hswebframework.web.datasource.service.InSpringDynamicDataSourceConfigRepository; -import org.hswebframework.web.datasource.starter.AopDataSourceSwitcherAutoConfiguration; import org.hswebframework.web.datasource.switcher.DataSourceSwitcher; import org.springframework.beans.BeansException; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.config.BeanPostProcessor; import org.springframework.boot.autoconfigure.ImportAutoConfiguration; -import org.springframework.boot.autoconfigure.condition.ConditionalOnBean; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @@ -39,9 +37,10 @@ public class DynamicDataSourceAutoConfiguration implements BeanPostProcessor { @Bean @ConditionalOnMissingBean(DynamicDataSourceService.class) - public InMemoryDynamicDataSourceService inMemoryDynamicDataSourceService(DynamicDataSourceConfigRepository repository, DataSource dataSource) { + public InSpringContextDynamicDataSourceService inMemoryDynamicDataSourceService(DynamicDataSourceConfigRepository repository, + DataSource dataSource) { DynamicDataSourceProxy dataSourceProxy = new DynamicDataSourceProxy(null, dataSource); - return new InMemoryDynamicDataSourceService(repository, dataSourceProxy); + return new InSpringContextDynamicDataSourceService(repository, dataSourceProxy); } @Override @@ -69,5 +68,4 @@ public class DynamicDataSourceAutoConfiguration implements BeanPostProcessor { } } - } diff --git a/hsweb-datasource/hsweb-datasource-api/src/main/java/org/hswebframework/web/datasource/service/InMemoryDynamicDataSourceService.java b/hsweb-datasource/hsweb-datasource-api/src/main/java/org/hswebframework/web/datasource/service/InSpringContextDynamicDataSourceService.java similarity index 54% rename from hsweb-datasource/hsweb-datasource-api/src/main/java/org/hswebframework/web/datasource/service/InMemoryDynamicDataSourceService.java rename to hsweb-datasource/hsweb-datasource-api/src/main/java/org/hswebframework/web/datasource/service/InSpringContextDynamicDataSourceService.java index 9ccb39bf1..7fc163fd4 100644 --- a/hsweb-datasource/hsweb-datasource-api/src/main/java/org/hswebframework/web/datasource/service/InMemoryDynamicDataSourceService.java +++ b/hsweb-datasource/hsweb-datasource-api/src/main/java/org/hswebframework/web/datasource/service/InSpringContextDynamicDataSourceService.java @@ -11,57 +11,43 @@ import org.springframework.context.ApplicationContext; import javax.sql.DataSource; import java.sql.SQLException; -import java.util.HashMap; -import java.util.List; -import java.util.Map; import java.util.concurrent.CountDownLatch; -import java.util.stream.Collectors; /** + * 基于spring容器的动态数据源服务。从spring容器中获取数据源 + * * @author zhouhao - * @since 1.0 + * @since 3.0 */ -public class InMemoryDynamicDataSourceService extends AbstractDynamicDataSourceService { +public class InSpringContextDynamicDataSourceService extends AbstractDynamicDataSourceService { - - @Autowired private ApplicationContext applicationContext; + @Autowired public void setApplicationContext(ApplicationContext applicationContext) { this.applicationContext = applicationContext; } - public InMemoryDynamicDataSourceService(DynamicDataSourceConfigRepository repository, DynamicDataSource defaultDataSource) { + public InSpringContextDynamicDataSourceService(DynamicDataSourceConfigRepository repository, DynamicDataSource defaultDataSource) { super(repository, defaultDataSource); } - public InMemoryDynamicDataSourceService(DynamicDataSourceConfigRepository repository, DataSource dataSource) throws SQLException { + public InSpringContextDynamicDataSourceService(DynamicDataSourceConfigRepository repository, DataSource dataSource) throws SQLException { super(repository, dataSource); } - @Deprecated - public void registerDataSource(String id, DataSource dataSource) { - InSpringDynamicDataSourceConfig config = new InSpringDynamicDataSourceConfig(); - config.setId(id); - config.setName(id); - CountDownLatch countDownLatch = new CountDownLatch(1); - dataSourceStore.put(id, new DataSourceCache(0L - , new DynamicDataSourceProxy(id, dataSource), countDownLatch, config)); - countDownLatch.countDown(); - } - @Override protected DataSourceCache createCache(InSpringDynamicDataSourceConfig config) { DataSource dataSource = applicationContext.getBean(config.getBeanName(), DataSource.class); CountDownLatch countDownLatch = new CountDownLatch(1); try { - return new DataSourceCache(config.hashCode(), new DynamicDataSourceProxy(config.getId(), dataSource), countDownLatch, config); - + return new DataSourceCache(config.hashCode(), + new DynamicDataSourceProxy(config.getId(), dataSource), + countDownLatch, + config); } finally { countDownLatch.countDown(); } - } - }