parent
18728a44ce
commit
10b91dc156
@ -0,0 +1,107 @@
|
|||||||
|
package org.opsli.core.autoconfigure;
|
||||||
|
|
||||||
|
import cn.hutool.core.collection.CollUtil;
|
||||||
|
import cn.hutool.core.convert.Convert;
|
||||||
|
import com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DataSourceProperty;
|
||||||
|
import com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceProperties;
|
||||||
|
import com.google.common.collect.Maps;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.apache.commons.lang3.StringUtils;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.context.annotation.Configuration;
|
||||||
|
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获得数据源工具类
|
||||||
|
*
|
||||||
|
* @author Parker
|
||||||
|
*/
|
||||||
|
@Slf4j
|
||||||
|
@Configuration
|
||||||
|
public class DbSourceProperties {
|
||||||
|
|
||||||
|
/** 数据库详情 */
|
||||||
|
private Map<String, DbSourceProperties.DataSourceInfo> dataSourceInfoMap;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获得数据库详情
|
||||||
|
* @return DataSourceInfo
|
||||||
|
*/
|
||||||
|
public Map<String, DbSourceProperties.DataSourceInfo> getDataSourceInfoMap() {
|
||||||
|
return this.dataSourceInfoMap;
|
||||||
|
}
|
||||||
|
|
||||||
|
// ==================================
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public static class DataSourceInfo{
|
||||||
|
/** URL */
|
||||||
|
private String url;
|
||||||
|
|
||||||
|
/** 地址 */
|
||||||
|
private String host;
|
||||||
|
|
||||||
|
/** 端口 */
|
||||||
|
private Integer port;
|
||||||
|
|
||||||
|
/** 数据库名 */
|
||||||
|
private String dbName;
|
||||||
|
|
||||||
|
/** 用户名 */
|
||||||
|
private String userName;
|
||||||
|
|
||||||
|
/** 密码 */
|
||||||
|
private String passWord;
|
||||||
|
|
||||||
|
/** 驱动类名称 */
|
||||||
|
private String driverClassName;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
public void setDataSourceInfoMap(DynamicDataSourceProperties dataSourceProperties) {
|
||||||
|
if(dataSourceProperties != null){
|
||||||
|
Map<String, DataSourceProperty> datasourceMap = dataSourceProperties.getDatasource();
|
||||||
|
if(CollUtil.isNotEmpty(datasourceMap)){
|
||||||
|
dataSourceInfoMap = Maps.newTreeMap();
|
||||||
|
for (Map.Entry<String, DataSourceProperty> dataSourcePropertyEntry : datasourceMap.entrySet()) {
|
||||||
|
String key = dataSourcePropertyEntry.getKey();
|
||||||
|
DataSourceProperty datasource = dataSourcePropertyEntry.getValue();
|
||||||
|
|
||||||
|
String url = datasource.getUrl();
|
||||||
|
String username = datasource.getUsername();
|
||||||
|
String password = datasource.getPassword();
|
||||||
|
String driverClassName = datasource.getDriverClassName();
|
||||||
|
|
||||||
|
|
||||||
|
// 非法判断
|
||||||
|
if(StringUtils.isBlank(url) || StringUtils.isBlank(username) ||
|
||||||
|
StringUtils.isBlank(password)
|
||||||
|
){
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
String[] split = url.split(":");
|
||||||
|
String host = String.format("%s:%s:%s", split[0], split[1], split[2]);
|
||||||
|
String[] portSplit = split[3].split("/");
|
||||||
|
String port = portSplit[0];
|
||||||
|
|
||||||
|
String[] databaseSplit = portSplit[1].split("\\?");
|
||||||
|
String dbName = databaseSplit[0];
|
||||||
|
|
||||||
|
DataSourceInfo dataSourceInfo = new DataSourceInfo();
|
||||||
|
dataSourceInfo.setUrl(url);
|
||||||
|
dataSourceInfo.setHost(host);
|
||||||
|
dataSourceInfo.setPort(Convert.toInt(port));
|
||||||
|
dataSourceInfo.setDbName(dbName);
|
||||||
|
dataSourceInfo.setUserName(username);
|
||||||
|
dataSourceInfo.setPassWord(password);
|
||||||
|
dataSourceInfo.setDriverClassName(driverClassName);
|
||||||
|
|
||||||
|
dataSourceInfoMap.put(key, dataSourceInfo);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in new issue