fix: druid connConfig
This commit is contained in:
parent
7d7606fcdb
commit
1acd3bb450
@ -16,6 +16,7 @@
|
|||||||
package com.baomidou.dynamic.datasource.creator.druid;
|
package com.baomidou.dynamic.datasource.creator.druid;
|
||||||
|
|
||||||
import com.baomidou.dynamic.datasource.toolkit.DsConfigUtil;
|
import com.baomidou.dynamic.datasource.toolkit.DsConfigUtil;
|
||||||
|
import lombok.NonNull;
|
||||||
import lombok.SneakyThrows;
|
import lombok.SneakyThrows;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
|
||||||
@ -42,7 +43,7 @@ public final class DruidConfigUtil {
|
|||||||
* @return Druid配置
|
* @return Druid配置
|
||||||
*/
|
*/
|
||||||
@SneakyThrows
|
@SneakyThrows
|
||||||
public static Properties mergeConfig(DruidConfig g, DruidConfig c) {
|
public static Properties mergeConfig(DruidConfig g, @NonNull DruidConfig c) {
|
||||||
Properties properties = new Properties();
|
Properties properties = new Properties();
|
||||||
for (Map.Entry<String, Method> entry : METHODS.entrySet()) {
|
for (Map.Entry<String, Method> entry : METHODS.entrySet()) {
|
||||||
String key = entry.getKey();
|
String key = entry.getKey();
|
||||||
@ -61,26 +62,56 @@ public final class DruidConfigUtil {
|
|||||||
}
|
}
|
||||||
|
|
||||||
//filters单独处理,默认了stat
|
//filters单独处理,默认了stat
|
||||||
// String filters = this.filters == null ? g.getFilters() : this.filters;
|
String filters = getValue(g, c, "filter");
|
||||||
// if (filters == null) {
|
if (filters == null) {
|
||||||
// filters = DruidConsts.STAT_STR;
|
filters = DruidConsts.STAT_STR;
|
||||||
// }
|
}
|
||||||
// if (publicKey != null && publicKey.length() > 0 && !filters.contains(DruidConsts.CONFIG_STR)) {
|
String publicKey = getValue(g, c, "publicKey");
|
||||||
// filters += "," + DruidConsts.CONFIG_STR;
|
boolean configFilterExist = publicKey != null && publicKey.length() > 0;
|
||||||
// }
|
if (publicKey != null && publicKey.length() > 0 && !filters.contains(DruidConsts.CONFIG_STR)) {
|
||||||
// properties.setProperty(DruidConsts.FILTERS, filters);
|
filters += "," + DruidConsts.CONFIG_STR;
|
||||||
//
|
}
|
||||||
// Properties connectProperties = connectionProperties == null ? g.getConnectionProperties() : connectionProperties;
|
properties.setProperty(DruidConsts.FILTERS, filters);
|
||||||
//
|
|
||||||
// if (publicKey != null && publicKey.length() > 0) {
|
|
||||||
// if (connectProperties == null) {
|
|
||||||
// connectProperties = new Properties();
|
|
||||||
// }
|
|
||||||
// connectProperties.setProperty("config.decrypt", Boolean.TRUE.toString());
|
|
||||||
// connectProperties.setProperty("config.decrypt.key", publicKey);
|
|
||||||
// }
|
|
||||||
// this.connectionProperties = connectProperties;
|
|
||||||
|
|
||||||
|
Properties connectProperties = new Properties();
|
||||||
|
Properties cConnectionProperties = c.getConnectionProperties();
|
||||||
|
if (g != null) {
|
||||||
|
Properties gConnectionProperties = g.getConnectionProperties();
|
||||||
|
if (gConnectionProperties != null) {
|
||||||
|
connectProperties.putAll(gConnectionProperties);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (cConnectionProperties != null) {
|
||||||
|
connectProperties.putAll(cConnectionProperties);
|
||||||
|
}
|
||||||
|
if (configFilterExist) {
|
||||||
|
connectProperties.setProperty("config.decrypt", Boolean.TRUE.toString());
|
||||||
|
connectProperties.setProperty("config.decrypt.key", publicKey);
|
||||||
|
}
|
||||||
|
c.setConnectionProperties(connectProperties);
|
||||||
return properties;
|
return properties;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static String getValue(DruidConfig g, @NonNull DruidConfig c, String field) {
|
||||||
|
Method method = METHODS.get(field);
|
||||||
|
if (method == null) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
Object value = method.invoke(c);
|
||||||
|
if (value != null) {
|
||||||
|
return String.valueOf(value);
|
||||||
|
}
|
||||||
|
if (g != null) {
|
||||||
|
value = method.invoke(g);
|
||||||
|
if (value != null) {
|
||||||
|
return String.valueOf(value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} catch (Exception e) {
|
||||||
|
// do nothing
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
@ -65,7 +65,6 @@ public class DruidDataSourceCreator implements DataSourceCreator {
|
|||||||
* Druid since 1.2.17 use 'configFromPropeties' to copy config
|
* Druid since 1.2.17 use 'configFromPropeties' to copy config
|
||||||
* Druid < 1.2.17 use 'configFromPropety' to copy config
|
* Druid < 1.2.17 use 'configFromPropety' to copy config
|
||||||
*/
|
*/
|
||||||
@SuppressWarnings("JavaReflectionMemberAccess")
|
|
||||||
private static void fetchMethod() {
|
private static void fetchMethod() {
|
||||||
Class<DruidDataSource> aClass = DruidDataSource.class;
|
Class<DruidDataSource> aClass = DruidDataSource.class;
|
||||||
try {
|
try {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user