From 8d35dc2e45d53c0ffefdbecd3dacf357793bfcfe Mon Sep 17 00:00:00 2001 From: sandking Date: Sat, 14 Mar 2020 00:15:29 +0800 Subject: [PATCH] =?UTF-8?q?=E6=89=A9=E5=B1=95=E9=85=8D=E7=BD=AESetting?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/cn/hutool/setting/Setting.java | 30 ++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) diff --git a/hutool-setting/src/main/java/cn/hutool/setting/Setting.java b/hutool-setting/src/main/java/cn/hutool/setting/Setting.java index a801b03ab..7ec296a78 100644 --- a/hutool-setting/src/main/java/cn/hutool/setting/Setting.java +++ b/hutool-setting/src/main/java/cn/hutool/setting/Setting.java @@ -11,6 +11,7 @@ import java.util.List; import java.util.Map; import java.util.Properties; import java.util.Set; +import java.util.function.Consumer; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.convert.Convert; @@ -191,6 +192,16 @@ public class Setting extends AbsSetting implements Map { * @param autoReload 是否自动加载 */ public void autoLoad(boolean autoReload) { + autoLoad(autoReload, null); + } + + /** + * 在配置文件变更时自动加载 + * + * @param callback 加载完成回调 + * @param autoReload 是否自动加载 + */ + public void autoLoad(boolean autoReload,Consumer callback) { if (autoReload) { Assert.notNull(this.settingUrl, "Setting URL is null !"); if (null != this.watchMonitor) { @@ -200,7 +211,11 @@ public class Setting extends AbsSetting implements Map { this.watchMonitor = WatchUtil.createModify(this.settingUrl, new SimpleWatcher() { @Override public void onModify(WatchEvent event, Path currentPath) { - load(); + boolean success = load(); + // 如果有回调,加载完毕则执行回调 + if (callback != null) { + callback.accept(success); + } } }); this.watchMonitor.start(); @@ -474,6 +489,19 @@ public class Setting extends AbsSetting implements Map { this.groupedMap.putAll(group, m); return this; } + + /** + * 添加一个Stting到主配置中 + * + * @param setting + * @return this + */ + public Setting addSetting(Setting setting) { + for (Entry> e : setting.getGroupedMap().entrySet()) { + this.putAll(e.getKey(), e.getValue()); + } + return this; + } /** * 清除指定分组下的所有键值对