From 52b4c279edbbb2b7b68dcc8a7c2f22f7e6c2ec40 Mon Sep 17 00:00:00 2001
From: KingMo <haotian2546@163.com>
Date: 星期日, 04 九月 2022 19:16:32 +0800
Subject: [PATCH] feature(yml): 增加*-dynamic.yml配置文件,动态化数据库系列参数,便于快速切换库
---
java110-db/src/main/java/com/java110/db/DataSourceConfig.java | 48 +++++++++++++++++++++++++++++++-----------------
1 files changed, 31 insertions(+), 17 deletions(-)
diff --git a/java110-db/src/main/java/com/java110/db/DataSourceConfig.java b/java110-db/src/main/java/com/java110/db/DataSourceConfig.java
old mode 100644
new mode 100755
index 159df84..8f9dcf9
--- a/java110-db/src/main/java/com/java110/db/DataSourceConfig.java
+++ b/java110-db/src/main/java/com/java110/db/DataSourceConfig.java
@@ -1,19 +1,17 @@
package com.java110.db;
+import com.java110.utils.util.StringUtil;
import org.apache.shardingsphere.shardingjdbc.api.yaml.YamlShardingDataSourceFactory;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
+import org.springframework.core.env.Environment;
import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.Resource;
import javax.servlet.Filter;
import javax.sql.DataSource;
-import java.io.ByteArrayOutputStream;
-import java.io.FileNotFoundException;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.Reader;
-import java.io.UnsupportedEncodingException;
+import java.io.*;
import java.sql.SQLException;
/**
@@ -25,6 +23,8 @@
//@Autowired
private Filter statFilter;
+ @Autowired
+ private Environment env;
private static final String SHARDING_YML_PATH = "dataSource.yml";
/**
@@ -39,16 +39,30 @@
*/
@Bean
public DataSource dataSource() throws SQLException, IOException {
-// YamlShardingConfiguration config = parse();
-// YamlShardingRuleConfiguration rule = config.getShardingRule();
-// for (String key : config.getDataSources().keySet()) {
-// DruidDataSource d = (DruidDataSource) config.getDataSources().get(key);
-// d.setProxyFilters(Lists.newArrayList(statFilter));
-// }
-// return ShardingDataSourceFactory.createDataSource(config.getDataSources(),
-// rule.getShardingRuleConfiguration(), config.getConfigMap(), config.getProps());
+ String path = SHARDING_YML_PATH;
- return YamlShardingDataSourceFactory.createDataSource(getYmlFile());
+ String[] actives = env.getActiveProfiles();
+ if (actives != null && actives.length > 0 && !"dev".equals(actives[0])) {
+ path = "dataSource-" + actives[0] + ".yml";
+ }
+
+ String configString = new String(getYmlFile(path), "UTF-8");
+ configString = configString.replaceAll("\\$\\{mysqlpwd\\}", env.getProperty("mysqlpwd"));
+
+ String mysqlPort = StringUtil.isEmpty(env.getProperty("mysqlport")) ? "3306" : env.getProperty("mysqlport");
+ configString = configString.replaceAll("\\$\\{mysqlport\\}", mysqlPort);
+
+ String dbttname = StringUtil.isEmpty(env.getProperty("dbttname")) ? "TT" : env.getProperty("dbttname");
+ String dbttuser = StringUtil.isEmpty(env.getProperty("dbttuser")) ? "TT" : env.getProperty("dbttuser");
+ String dbhcname = StringUtil.isEmpty(env.getProperty("dbhcname")) ? "hc_community" : env.getProperty("dbhcname");
+ String dbhcuser = StringUtil.isEmpty(env.getProperty("dbhcuser")) ? "hc_community" : env.getProperty("dbhcuser");
+
+ configString = configString.replaceAll("\\$\\{dbttname\\}", dbttname)
+ .replaceAll("\\$\\{dbttuser\\}", dbttuser)
+ .replaceAll("\\$\\{dbhcname\\}", dbhcname)
+ .replaceAll("\\$\\{dbhcuser\\}", dbhcuser);
+
+ return YamlShardingDataSourceFactory.createDataSource(configString.getBytes("UTF-8"));
}
/**
@@ -59,12 +73,12 @@
* @throws FileNotFoundException 鏂囦欢鏈彂鐜板紓甯�
* @throws UnsupportedEncodingException 涓嶆敮鎸佺紪鐮佸紓甯�
*/
- private byte[] getYmlFile() throws IOException {
+ private byte[] getYmlFile(String path) throws IOException {
Reader reader = null;
InputStream inputStream = null;
ByteArrayOutputStream swapStream = null;
try {
- Resource resource = new ClassPathResource(SHARDING_YML_PATH);
+ Resource resource = new ClassPathResource(path);
inputStream = resource.getInputStream();
swapStream = new ByteArrayOutputStream();
--
Gitblit v1.8.0