mirror of
https://github.com/hs-web/hsweb-framework.git
synced 2026-06-20 11:42:24 +08:00
优化动态表单
This commit is contained in:
@@ -2,27 +2,31 @@ package org.hswebframework.web.datasource;
|
||||
|
||||
import org.hswebframework.web.datasource.exception.DataSourceNotFoundException;
|
||||
import org.hswebframework.web.datasource.switcher.DataSourceSwitcher;
|
||||
import org.hswebframework.web.datasource.switcher.DefaultDataSourceSwitcher;
|
||||
|
||||
/**
|
||||
* 用于操作动态数据源,如获取当前使用的数据源,使用switcher切换数据源等
|
||||
*
|
||||
* @author zhouhao
|
||||
* @since 3.0
|
||||
* @since 3.0
|
||||
*/
|
||||
public final class DataSourceHolder {
|
||||
|
||||
private static final DataSourceSwitcher defaultSwitcher = new DefaultDataSourceSwitcher();
|
||||
|
||||
/**
|
||||
* 动态数据源切换器
|
||||
*/
|
||||
static DataSourceSwitcher dataSourceSwitcher;
|
||||
|
||||
static DataSourceSwitcher dataSourceSwitcher = defaultSwitcher;
|
||||
/**
|
||||
* 动态数据源服务
|
||||
*/
|
||||
static DynamicDataSourceService dynamicDataSourceService;
|
||||
|
||||
public static void checkDynamicDataSourceReady() {
|
||||
if (dynamicDataSourceService == null) throw new UnsupportedOperationException("dynamicDataSourceService not ready");
|
||||
if (dynamicDataSourceService == null) {
|
||||
throw new UnsupportedOperationException("dataSourceService not ready");
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -36,19 +40,22 @@ public final class DataSourceHolder {
|
||||
* @return 默认数据源
|
||||
*/
|
||||
public static DynamicDataSource defaultDataSource() {
|
||||
checkDynamicDataSourceReady();
|
||||
return dynamicDataSourceService.getDefaultDataSource();
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据指定的数据源id获取动态数据源
|
||||
*
|
||||
* @param dataSourceId 数据源id
|
||||
* @return 动态数据源
|
||||
* @throws DataSourceNotFoundException 如果数据源不存在将抛出此异常
|
||||
*/
|
||||
public static DynamicDataSource dataSource(String dataSourceId){
|
||||
public static DynamicDataSource dataSource(String dataSourceId) {
|
||||
checkDynamicDataSourceReady();
|
||||
return dynamicDataSourceService.getDataSource(dataSourceId);
|
||||
}
|
||||
|
||||
/**
|
||||
* @return 当前使用的数据源
|
||||
*/
|
||||
|
||||
@@ -16,23 +16,17 @@ import java.util.Objects;
|
||||
*/
|
||||
@Transactional(rollbackFor = Throwable.class)
|
||||
public class DefaultJdbcExecutor extends AbstractJdbcSqlExecutor {
|
||||
private DataSource dataSource;
|
||||
|
||||
public DefaultJdbcExecutor(DataSource dataSource) {
|
||||
Objects.requireNonNull(dataSource);
|
||||
this.dataSource = dataSource;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Connection getConnection() {
|
||||
return DataSourceUtils.getConnection(dataSource);
|
||||
return DataSourceUtils.getConnection(DataSourceHolder.currentDataSource());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void releaseConnection(Connection connection) throws SQLException {
|
||||
DataSourceUtils.releaseConnection(connection, dataSource);
|
||||
DataSourceUtils.releaseConnection(connection, DataSourceHolder.currentDataSource());
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
@Transactional(propagation = Propagation.NOT_SUPPORTED)
|
||||
public void exec(SQL sql) throws SQLException {
|
||||
|
||||
@@ -3,11 +3,9 @@ package org.hswebframework.web.datasource;
|
||||
import org.hsweb.ezorm.rdb.executor.SqlExecutor;
|
||||
import org.hswebframework.web.datasource.starter.AopDataSourceSwitcherAutoConfiguration;
|
||||
import org.hswebframework.web.datasource.switcher.DataSourceSwitcher;
|
||||
import org.hswebframework.web.datasource.switcher.DefaultDataSourceSwitcher;
|
||||
import org.springframework.beans.BeansException;
|
||||
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;
|
||||
@@ -23,22 +21,16 @@ import javax.sql.DataSource;
|
||||
@ImportAutoConfiguration(AopDataSourceSwitcherAutoConfiguration.class)
|
||||
public class DynamicDataSourceAutoConfiguration implements BeanPostProcessor {
|
||||
|
||||
@Bean
|
||||
@ConditionalOnMissingBean(DataSourceSwitcher.class)
|
||||
public DataSourceSwitcher dataSourceSwitcher() {
|
||||
return new DefaultDataSourceSwitcher();
|
||||
}
|
||||
|
||||
@Bean
|
||||
@ConditionalOnMissingBean(SqlExecutor.class)
|
||||
public SqlExecutor sqlExecutor(DataSource dataSource) {
|
||||
return new DefaultJdbcExecutor(dataSource);
|
||||
public SqlExecutor sqlExecutor() {
|
||||
return new DefaultJdbcExecutor();
|
||||
}
|
||||
|
||||
@Bean
|
||||
@ConditionalOnMissingBean(DynamicDataSourceService.class)
|
||||
public DynamicDataSourceService justSupportDefaultDataSourceService(DataSource dataSource){
|
||||
DynamicDataSourceProxy dataSourceProxy=new DynamicDataSourceProxy(null,dataSource);
|
||||
public DynamicDataSourceService justSupportDefaultDataSourceService(DataSource dataSource) {
|
||||
DynamicDataSourceProxy dataSourceProxy = new DynamicDataSourceProxy(null, dataSource);
|
||||
return new DynamicDataSourceService() {
|
||||
@Override
|
||||
public DynamicDataSource getDataSource(String dataSourceId) {
|
||||
@@ -52,6 +44,7 @@ public class DynamicDataSourceAutoConfiguration implements BeanPostProcessor {
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {
|
||||
return bean;
|
||||
|
||||
Reference in New Issue
Block a user