From 07ed7163ea2af5b8d162ae3a945f0755e252b126 Mon Sep 17 00:00:00 2001 From: Redkale Date: Wed, 7 Dec 2022 13:26:52 +0800 Subject: [PATCH] =?UTF-8?q?PropertiesAgent=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/org/redkale/boot/Application.java | 12 +++++++----- src/main/java/org/redkale/boot/PropertiesAgent.java | 3 ++- src/main/java/org/redkale/source/DataJdbcSource.java | 4 ++-- src/main/java/org/redkale/util/ResourceEvent.java | 1 + src/main/java/org/redkale/util/ResourceFactory.java | 6 +++++- 5 files changed, 17 insertions(+), 9 deletions(-) diff --git a/src/main/java/org/redkale/boot/Application.java b/src/main/java/org/redkale/boot/Application.java index 025f2389e..b8c6cff94 100644 --- a/src/main/java/org/redkale/boot/Application.java +++ b/src/main/java/org/redkale/boot/Application.java @@ -1714,13 +1714,15 @@ public final class Application { //key只会是system.property.、mimetype.property.、redkale.cachesource(.|[)、redkale.datasource(.|[)和其他非redkale.开头的配置项 void updateEnvironmentProperty(String key, Object value, Properties envChangeCache, Properties sourceChangeCache) { if (key == null || value == null) return; - String val = replaceValue(value.toString()); + String val = replaceValue(value.toString()).trim(); if (key.startsWith("redkale.datasource.") || key.startsWith("redkale.datasource[") || key.startsWith("redkale.cachesource.") || key.startsWith("redkale.cachesource[")) { - if (sourceChangeCache == null) { - sourceProperties.put(key, val); - } else { - sourceChangeCache.put(key, val); + if (!Objects.equals(val, sourceProperties.getProperty(key))) { + if (sourceChangeCache == null) { + sourceProperties.put(key, val); + } else { + sourceChangeCache.put(key, val); + } } } else if (key.startsWith("system.property.")) { String propName = key.substring("system.property.".length()); diff --git a/src/main/java/org/redkale/boot/PropertiesAgent.java b/src/main/java/org/redkale/boot/PropertiesAgent.java index c11537425..3d57ee8fe 100644 --- a/src/main/java/org/redkale/boot/PropertiesAgent.java +++ b/src/main/java/org/redkale/boot/PropertiesAgent.java @@ -53,9 +53,10 @@ public abstract class PropertiesAgent { public abstract void destroy(AnyValue conf); protected void updateEnvironmentProperties(Application application, Properties props) { + if (props.isEmpty()) return; Properties envChangeCache = new Properties(); Properties sourceChangeCache = new Properties(); - props.forEach((k, v) -> application.updateEnvironmentProperty(k.toString(), v, envChangeCache, sourceChangeCache)); + props.forEach((k, v) -> application.updateEnvironmentProperty(k.toString(), v.toString().trim(), envChangeCache, sourceChangeCache)); if (!envChangeCache.isEmpty()) { application.resourceFactory.register(envChangeCache, "", Environment.class); } diff --git a/src/main/java/org/redkale/source/DataJdbcSource.java b/src/main/java/org/redkale/source/DataJdbcSource.java index 7c455251c..b2587923d 100644 --- a/src/main/java/org/redkale/source/DataJdbcSource.java +++ b/src/main/java/org/redkale/source/DataJdbcSource.java @@ -1152,7 +1152,7 @@ public class DataJdbcSource extends DataSqlSource { } catch (SQLException e) { throw new RuntimeException(e); } - clientInfo.put("version", urlVersion); + clientInfo.put("version", String.valueOf(urlVersion)); } @ResourceListener @@ -1179,7 +1179,7 @@ public class DataJdbcSource extends DataSqlSource { || !Objects.equals(newPassword, this.connectAttrs.get("password")) || !Objects.equals(newUrl, url)) { this.urlVersion++; Properties newClientInfo = new Properties(); - newClientInfo.put("version", urlVersion); + newClientInfo.put("version", String.valueOf(urlVersion)); this.clientInfo = newClientInfo; } this.url = newUrl; diff --git a/src/main/java/org/redkale/util/ResourceEvent.java b/src/main/java/org/redkale/util/ResourceEvent.java index 3ff1f25b5..85c0917ac 100644 --- a/src/main/java/org/redkale/util/ResourceEvent.java +++ b/src/main/java/org/redkale/util/ResourceEvent.java @@ -54,6 +54,7 @@ public interface ResourceEvent { static String cover(T val) { if (val == null) return null; String str = val.toString(); + if ("false".equalsIgnoreCase(str)) return str; if (str.length() <= 4) return str; if (numRegx.test(str)) return str; return str.substring(0, 2) + "***" + str.substring(str.length() - 2); diff --git a/src/main/java/org/redkale/util/ResourceFactory.java b/src/main/java/org/redkale/util/ResourceFactory.java index c760b976f..4213065aa 100644 --- a/src/main/java/org/redkale/util/ResourceFactory.java +++ b/src/main/java/org/redkale/util/ResourceFactory.java @@ -447,7 +447,11 @@ public final class ResourceFactory { properties.forEach((k, v) -> { Object old = register(true, k.toString(), String.class, v, wrappers); if (!Objects.equals(v, old)) { - environmentEventList.add(ResourceEvent.create(k.toString(), v, old)); + String key = k.toString(); + if (key.startsWith("property.")) { + key = key.substring("property.".length()); + } + environmentEventList.add(ResourceEvent.create(key, v, old)); } }); Map envListenMap = new LinkedHashMap<>();