mirror of
https://gitee.com/mybatis-flex/mybatis-flex.git
synced 2025-12-07 09:08:24 +08:00
optimize: MybatisFlexAutoConfiguration.java
This commit is contained in:
parent
a19aefc469
commit
e47500779f
@ -34,7 +34,7 @@ public class DataSourceManager {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static void resetDataSource(DataSource dataSource) {
|
public static void decryptDataSource(DataSource dataSource) {
|
||||||
if (decipher == null) {
|
if (decipher == null) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -51,7 +51,7 @@ public class FlexDataSource extends AbstractDataSource {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void addDataSource(String dataSourceKey, DataSource dataSource) {
|
public void addDataSource(String dataSourceKey, DataSource dataSource) {
|
||||||
DataSourceManager.resetDataSource(dataSource);
|
DataSourceManager.decryptDataSource(dataSource);
|
||||||
dataSourceMap.put(dataSourceKey, dataSource);
|
dataSourceMap.put(dataSourceKey, dataSource);
|
||||||
dbTypeHashMap.put(dataSourceKey, DbTypeUtil.getDbType(dataSource));
|
dbTypeHashMap.put(dataSourceKey, DbTypeUtil.getDbType(dataSource));
|
||||||
}
|
}
|
||||||
@ -61,6 +61,21 @@ public class FlexDataSource extends AbstractDataSource {
|
|||||||
dbTypeHashMap.remove(dataSourceKey);
|
dbTypeHashMap.remove(dataSourceKey);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Map<String, DataSource> getDataSourceMap() {
|
||||||
|
return dataSourceMap;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Map<String, DbType> getDbTypeHashMap() {
|
||||||
|
return dbTypeHashMap;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getDefaultDataSourceKey() {
|
||||||
|
return defaultDataSourceKey;
|
||||||
|
}
|
||||||
|
|
||||||
|
public DataSource getDefaultDataSource() {
|
||||||
|
return defaultDataSource;
|
||||||
|
}
|
||||||
|
|
||||||
public DbType getDbType(String dataSourceKey) {
|
public DbType getDbType(String dataSourceKey) {
|
||||||
return dbTypeHashMap.get(dataSourceKey);
|
return dbTypeHashMap.get(dataSourceKey);
|
||||||
|
|||||||
@ -16,12 +16,9 @@
|
|||||||
package com.mybatisflex.spring.boot;
|
package com.mybatisflex.spring.boot;
|
||||||
|
|
||||||
import com.mybatisflex.core.datasource.DataSourceBuilder;
|
import com.mybatisflex.core.datasource.DataSourceBuilder;
|
||||||
import com.mybatisflex.core.datasource.DataSourceDecipher;
|
|
||||||
import com.mybatisflex.core.datasource.DataSourceManager;
|
|
||||||
import com.mybatisflex.core.datasource.FlexDataSource;
|
import com.mybatisflex.core.datasource.FlexDataSource;
|
||||||
import org.apache.ibatis.session.SqlSessionFactory;
|
import org.apache.ibatis.session.SqlSessionFactory;
|
||||||
import org.mybatis.spring.SqlSessionFactoryBean;
|
import org.mybatis.spring.SqlSessionFactoryBean;
|
||||||
import org.springframework.beans.factory.ObjectProvider;
|
|
||||||
import org.springframework.boot.autoconfigure.AutoConfigureBefore;
|
import org.springframework.boot.autoconfigure.AutoConfigureBefore;
|
||||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
|
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
|
||||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
|
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
|
||||||
@ -41,16 +38,14 @@ import java.util.Map;
|
|||||||
@Configuration(proxyBeanMethods = false)
|
@Configuration(proxyBeanMethods = false)
|
||||||
@EnableConfigurationProperties(MybatisFlexProperties.class)
|
@EnableConfigurationProperties(MybatisFlexProperties.class)
|
||||||
@ConditionalOnClass({SqlSessionFactory.class, SqlSessionFactoryBean.class})
|
@ConditionalOnClass({SqlSessionFactory.class, SqlSessionFactoryBean.class})
|
||||||
@AutoConfigureBefore(value = DataSourceAutoConfiguration.class, name = "com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure")
|
@AutoConfigureBefore(value = DataSourceAutoConfiguration.class
|
||||||
|
, name = "com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure")
|
||||||
public class MultiDataSourceAutoConfiguration {
|
public class MultiDataSourceAutoConfiguration {
|
||||||
|
|
||||||
private final Map<String, Map<String, String>> dataSourceProperties;
|
private final Map<String, Map<String, String>> dataSourceProperties;
|
||||||
protected final DataSourceDecipher dataSourceDecipher;
|
|
||||||
|
|
||||||
public MultiDataSourceAutoConfiguration(MybatisFlexProperties properties
|
public MultiDataSourceAutoConfiguration(MybatisFlexProperties properties) {
|
||||||
, ObjectProvider<DataSourceDecipher> dataSourceDecipherProvider) {
|
|
||||||
dataSourceProperties = properties.getDatasource();
|
dataSourceProperties = properties.getDatasource();
|
||||||
dataSourceDecipher = dataSourceDecipherProvider.getIfAvailable();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -58,10 +53,6 @@ public class MultiDataSourceAutoConfiguration {
|
|||||||
@ConditionalOnMissingBean
|
@ConditionalOnMissingBean
|
||||||
public DataSource dataSource() {
|
public DataSource dataSource() {
|
||||||
|
|
||||||
if (dataSourceDecipher != null) {
|
|
||||||
DataSourceManager.setDecipher(dataSourceDecipher);
|
|
||||||
}
|
|
||||||
|
|
||||||
FlexDataSource flexDataSource = null;
|
FlexDataSource flexDataSource = null;
|
||||||
|
|
||||||
if (dataSourceProperties != null && !dataSourceProperties.isEmpty()) {
|
if (dataSourceProperties != null && !dataSourceProperties.isEmpty()) {
|
||||||
|
|||||||
@ -18,6 +18,7 @@ package com.mybatisflex.spring.boot;
|
|||||||
import com.mybatisflex.core.FlexGlobalConfig;
|
import com.mybatisflex.core.FlexGlobalConfig;
|
||||||
import com.mybatisflex.core.datasource.DataSourceDecipher;
|
import com.mybatisflex.core.datasource.DataSourceDecipher;
|
||||||
import com.mybatisflex.core.datasource.DataSourceManager;
|
import com.mybatisflex.core.datasource.DataSourceManager;
|
||||||
|
import com.mybatisflex.core.datasource.FlexDataSource;
|
||||||
import com.mybatisflex.core.logicdelete.LogicDeleteManager;
|
import com.mybatisflex.core.logicdelete.LogicDeleteManager;
|
||||||
import com.mybatisflex.core.logicdelete.LogicDeleteProcessor;
|
import com.mybatisflex.core.logicdelete.LogicDeleteProcessor;
|
||||||
import com.mybatisflex.core.mybatis.FlexConfiguration;
|
import com.mybatisflex.core.mybatis.FlexConfiguration;
|
||||||
@ -70,6 +71,7 @@ import org.springframework.util.StringUtils;
|
|||||||
import javax.sql.DataSource;
|
import javax.sql.DataSource;
|
||||||
import java.beans.PropertyDescriptor;
|
import java.beans.PropertyDescriptor;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
@ -151,7 +153,7 @@ public class MybatisFlexAutoConfiguration implements InitializingBean {
|
|||||||
this.configurationCustomizers = configurationCustomizersProvider.getIfAvailable();
|
this.configurationCustomizers = configurationCustomizersProvider.getIfAvailable();
|
||||||
this.sqlSessionFactoryBeanCustomizers = sqlSessionFactoryBeanCustomizers.getIfAvailable();
|
this.sqlSessionFactoryBeanCustomizers = sqlSessionFactoryBeanCustomizers.getIfAvailable();
|
||||||
|
|
||||||
//数据密码
|
//数据源解密器
|
||||||
this.dataSourceDecipher = dataSourceDecipherProvider.getIfAvailable();
|
this.dataSourceDecipher = dataSourceDecipherProvider.getIfAvailable();
|
||||||
|
|
||||||
//动态表名
|
//动态表名
|
||||||
@ -178,6 +180,11 @@ public class MybatisFlexAutoConfiguration implements InitializingBean {
|
|||||||
properties.getGlobalConfig().applyTo(FlexGlobalConfig.getDefaultConfig());
|
properties.getGlobalConfig().applyTo(FlexGlobalConfig.getDefaultConfig());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//数据源解密器
|
||||||
|
if (dataSourceDecipher != null) {
|
||||||
|
DataSourceManager.setDecipher(dataSourceDecipher);
|
||||||
|
}
|
||||||
|
|
||||||
// 动态表名配置
|
// 动态表名配置
|
||||||
if (dynamicTableProcessor != null) {
|
if (dynamicTableProcessor != null) {
|
||||||
TableManager.setDynamicTableProcessor(dynamicTableProcessor);
|
TableManager.setDynamicTableProcessor(dynamicTableProcessor);
|
||||||
@ -213,9 +220,14 @@ public class MybatisFlexAutoConfiguration implements InitializingBean {
|
|||||||
@Bean
|
@Bean
|
||||||
@ConditionalOnMissingBean
|
@ConditionalOnMissingBean
|
||||||
public SqlSessionFactory sqlSessionFactory(DataSource dataSource) throws Exception {
|
public SqlSessionFactory sqlSessionFactory(DataSource dataSource) throws Exception {
|
||||||
if (dataSourceDecipher != null) {
|
|
||||||
DataSourceManager.setDecipher(dataSourceDecipher);
|
if (dataSource instanceof FlexDataSource && DataSourceManager.getDecipher() != null) {
|
||||||
|
Map<String, DataSource> dataSourceMap = ((FlexDataSource) dataSource).getDataSourceMap();
|
||||||
|
for (DataSource ds : dataSourceMap.values()) {
|
||||||
|
DataSourceManager.decryptDataSource(ds);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
SqlSessionFactoryBean factory = new FlexSqlSessionFactoryBean();
|
SqlSessionFactoryBean factory = new FlexSqlSessionFactoryBean();
|
||||||
factory.setDataSource(dataSource);
|
factory.setDataSource(dataSource);
|
||||||
if (properties.getConfiguration() == null || properties.getConfiguration().getVfsImpl() == null) {
|
if (properties.getConfiguration() == null || properties.getConfiguration().getVfsImpl() == null) {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user