|
@@ -11,57 +11,43 @@ import org.springframework.context.ApplicationContext;
|
|
|
|
|
|
import javax.sql.DataSource;
|
|
import javax.sql.DataSource;
|
|
import java.sql.SQLException;
|
|
import java.sql.SQLException;
|
|
-import java.util.HashMap;
|
|
|
|
-import java.util.List;
|
|
|
|
-import java.util.Map;
|
|
|
|
import java.util.concurrent.CountDownLatch;
|
|
import java.util.concurrent.CountDownLatch;
|
|
-import java.util.stream.Collectors;
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
|
+ * 基于spring容器的动态数据源服务。从spring容器中获取数据源
|
|
|
|
+ *
|
|
* @author zhouhao
|
|
* @author zhouhao
|
|
- * @since 1.0
|
|
|
|
|
|
+ * @since 3.0
|
|
*/
|
|
*/
|
|
-public class InMemoryDynamicDataSourceService extends AbstractDynamicDataSourceService<InSpringDynamicDataSourceConfig> {
|
|
|
|
|
|
+public class InSpringContextDynamicDataSourceService extends AbstractDynamicDataSourceService<InSpringDynamicDataSourceConfig> {
|
|
|
|
|
|
-
|
|
|
|
- @Autowired
|
|
|
|
private ApplicationContext applicationContext;
|
|
private ApplicationContext applicationContext;
|
|
|
|
|
|
|
|
+ @Autowired
|
|
public void setApplicationContext(ApplicationContext applicationContext) {
|
|
public void setApplicationContext(ApplicationContext applicationContext) {
|
|
this.applicationContext = applicationContext;
|
|
this.applicationContext = applicationContext;
|
|
}
|
|
}
|
|
|
|
|
|
- public InMemoryDynamicDataSourceService(DynamicDataSourceConfigRepository<InSpringDynamicDataSourceConfig> repository, DynamicDataSource defaultDataSource) {
|
|
|
|
|
|
+ public InSpringContextDynamicDataSourceService(DynamicDataSourceConfigRepository<InSpringDynamicDataSourceConfig> repository, DynamicDataSource defaultDataSource) {
|
|
super(repository, defaultDataSource);
|
|
super(repository, defaultDataSource);
|
|
}
|
|
}
|
|
|
|
|
|
- public InMemoryDynamicDataSourceService(DynamicDataSourceConfigRepository<InSpringDynamicDataSourceConfig> repository, DataSource dataSource) throws SQLException {
|
|
|
|
|
|
+ public InSpringContextDynamicDataSourceService(DynamicDataSourceConfigRepository<InSpringDynamicDataSourceConfig> repository, DataSource dataSource) throws SQLException {
|
|
super(repository, dataSource);
|
|
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
|
|
@Override
|
|
protected DataSourceCache createCache(InSpringDynamicDataSourceConfig config) {
|
|
protected DataSourceCache createCache(InSpringDynamicDataSourceConfig config) {
|
|
DataSource dataSource = applicationContext.getBean(config.getBeanName(), DataSource.class);
|
|
DataSource dataSource = applicationContext.getBean(config.getBeanName(), DataSource.class);
|
|
CountDownLatch countDownLatch = new CountDownLatch(1);
|
|
CountDownLatch countDownLatch = new CountDownLatch(1);
|
|
try {
|
|
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 {
|
|
} finally {
|
|
countDownLatch.countDown();
|
|
countDownLatch.countDown();
|
|
}
|
|
}
|
|
-
|
|
|
|
}
|
|
}
|
|
|
|
|
|
-
|
|
|
|
}
|
|
}
|