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