mirror of
https://gitee.com/mybatis-flex/mybatis-flex.git
synced 2025-12-07 00:58:24 +08:00
fix: 修复多数据源、且数据源加密的情况下,无法正确解析 jdbcUrl 的问题
This commit is contained in:
parent
413ea0469c
commit
321593524a
@ -16,11 +16,14 @@
|
|||||||
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 com.mybatisflex.spring.datasource.DataSourceAdvice;
|
import com.mybatisflex.spring.datasource.DataSourceAdvice;
|
||||||
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.aop.Advisor;
|
import org.springframework.aop.Advisor;
|
||||||
|
import org.springframework.beans.factory.ObjectProvider;
|
||||||
import org.springframework.beans.factory.config.BeanDefinition;
|
import org.springframework.beans.factory.config.BeanDefinition;
|
||||||
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;
|
||||||
@ -37,6 +40,7 @@ import java.util.Map;
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* MyBatis-Flex 多数据源的配置支持。
|
* MyBatis-Flex 多数据源的配置支持。
|
||||||
|
*
|
||||||
* @author michael
|
* @author michael
|
||||||
*/
|
*/
|
||||||
@ConditionalOnMybatisFlexDatasource()
|
@ConditionalOnMybatisFlexDatasource()
|
||||||
@ -47,10 +51,18 @@ import java.util.Map;
|
|||||||
, name = "com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure")
|
, 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;
|
||||||
|
|
||||||
public MultiDataSourceAutoConfiguration(MybatisFlexProperties properties) {
|
//数据源解密器
|
||||||
|
protected final DataSourceDecipher dataSourceDecipher;
|
||||||
|
|
||||||
|
|
||||||
|
public MultiDataSourceAutoConfiguration(MybatisFlexProperties properties
|
||||||
|
, ObjectProvider<DataSourceDecipher> dataSourceDecipherProvider
|
||||||
|
) {
|
||||||
dataSourceProperties = properties.getDatasource();
|
dataSourceProperties = properties.getDatasource();
|
||||||
|
dataSourceDecipher = dataSourceDecipherProvider.getIfAvailable();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Bean
|
@Bean
|
||||||
@ -60,6 +72,9 @@ public class MultiDataSourceAutoConfiguration {
|
|||||||
FlexDataSource flexDataSource = null;
|
FlexDataSource flexDataSource = null;
|
||||||
|
|
||||||
if (dataSourceProperties != null && !dataSourceProperties.isEmpty()) {
|
if (dataSourceProperties != null && !dataSourceProperties.isEmpty()) {
|
||||||
|
|
||||||
|
DataSourceManager.setDecipher(dataSourceDecipher);
|
||||||
|
|
||||||
for (Map.Entry<String, Map<String, String>> entry : dataSourceProperties.entrySet()) {
|
for (Map.Entry<String, Map<String, String>> entry : dataSourceProperties.entrySet()) {
|
||||||
DataSource dataSource = new DataSourceBuilder(entry.getValue()).build();
|
DataSource dataSource = new DataSourceBuilder(entry.getValue()).build();
|
||||||
if (flexDataSource == null) {
|
if (flexDataSource == null) {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user