java.lang.Object
org.miaixz.bus.setting.magic.AbstractSetting
org.miaixz.bus.setting.Setting
- All Implemented Interfaces:
Serializable,Map<String,,String> org.miaixz.bus.core.lang.getter.GroupedTypeGetter<CharSequence,,CharSequence> org.miaixz.bus.core.lang.getter.TypeGetter<CharSequence>
设置工具类。 用于支持设置(配置)文件 用于替换Properties类,提供功能更加强大的配置文件,同时对Properties文件向下兼容
1、支持变量,默认变量命名为 ${变量名},变量只能识别读入行的变量,例如第6行的变量在第三行无法读取
2、支持分组,分组为中括号括起来的内容,中括号以下的行都为此分组的内容,无分组相当于空字符分组,若某个key是name,加上分组后的键相当于group.name
3、注释以#开头,但是空行和不带“=”的行也会被跳过,但是建议加#
4、store方法不会保存注释内容,慎重使用
- Since:
- Java 17+
- Author:
- Kimi Liu
- See Also:
-
Nested Class Summary
-
Field Summary
FieldsModifier and TypeFieldDescriptionprotected Charset本设置对象的字符集static final Charset默认字符集static final String默认配置文件扩展名protected boolean是否使用变量protected org.miaixz.bus.core.io.resource.Resource设定文件的资源Fields inherited from class org.miaixz.bus.setting.magic.AbstractSetting
DEFAULT_DELIMITER, DEFAULT_GROUP -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionaddSetting(Setting setting) 添加一个Stting到主配置中voidautoLoad()在配置文件变更时自动加载void在配置文件变更时自动加载voidclear()清空默认分组(空分组)中的所有键值对清除指定分组下的所有键值对booleancontainsKey(Object key) 默认分组(空分组)中是否包含指定key对应的值booleancontainsKey(String group, String key) 指定分组中是否包含指定keybooleancontainsValue(Object value) 默认分组(空分组)中是否包含指定值booleancontainsValue(String group, String value) 指定分组中是否包含指定值entrySet()获取默认分组(空分组)中的所有键值对列表指定分组下所有键值对boolean获取默认分组(空分组)中指定key对应的值getAndRemove(String... keys) 获取并删除键值对,当指定键对应值非空时,返回并删除这个值,后边的键对应的值不再查找获取GroupedMap获取所有分组获得指定分组的所有键值对,此方法获取的是原始键值对,获取的键值对可以被修改getObjByGroup(CharSequence key, CharSequence group, Object defaultValue) getProperties(String group) 获取group分组下所有配置键值对,组成新的Properties获取group分组下所有配置键值对,组成新的PropsgetSetting(String group) 获取group分组下所有配置键值对,组成新的Setting获得设定文件的路径获得设定文件的URLinthashCode()booleanisEmpty()boolean某个分组对应的键值对是否为空keySet()获取默认分组(空分组)中的所有键列表指定分组所有键的Setload()重新加载配置文件static Settingof()构建一个空的Setting,用于手动加入参数将指定键值对加入到默认分组(空分组)中加入多个键值对到某个分组下void将键值对Map加入默认分组(空分组)中putByGroup(String key, String group, String value) 将键值对加入到对应分组中移除默认分组(空分组)中指定值从指定分组中删除指定值设置值setByGroup(String key, String group, String value) 将键值对加入到对应分组中 此方法用于与getXXX统一参数顺序通过lambda批量设置值 实际使用时,可以使用getXXX的方法引用来完成键值对的赋值:setLogIfNull(boolean logIfNull) 设置当获取key对应值为null时是否打印debug日志提示用户setVarRegex(String regex) 设置变量的正则 正则只能有一个group表示变量本身,剩余为字符 例如 \$\{(name)\}表示${name}变量名为name的一个变量表示intsize()键值总数void停止自动加载voidstore()持久化当前设置,会覆盖掉之前的设置 持久化不会保留之前的分组,注意如果配置文件在jar内部或者在exe中,此方法会报错。void持久化当前设置,会覆盖掉之前的设置 持久化不会保留之前的分组void持久化当前设置,会覆盖掉之前的设置 持久化不会保留之前的分组toProps()转换为Props对象,原分组变为前缀toString()values()获取默认分组(空分组)中的所有值列表指定分组下所有值Methods inherited from class org.miaixz.bus.setting.magic.AbstractSetting
get, getByGroupNotEmpty, getObject, getStrs, getStrs, getStrsByGroup, getStrsByGroup, toBean, toBean, toBean, toBeanMethods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, waitMethods inherited from interface org.miaixz.bus.core.lang.getter.GroupedTypeGetter
getBigDecimalByGroup, getBigDecimalByGroup, getBigIntegerByGroup, getBigIntegerByGroup, getBoolByGroup, getBoolByGroup, getByGroup, getByGroup, getByteByGroup, getByteByGroup, getCharByGroup, getCharByGroup, getDoubleByGroup, getDoubleByGroup, getIntByGroup, getIntByGroup, getLongByGroup, getLongByGroup, getObjByGroup, getShortByGroup, getShortByGroup, getStrByGroup, getStrByGroupMethods inherited from interface java.util.Map
compute, computeIfAbsent, computeIfPresent, forEach, getOrDefault, merge, putIfAbsent, remove, replace, replace, replaceAllMethods inherited from interface org.miaixz.bus.core.lang.getter.TypeGetter
get, get, get, getBigDecimal, getBigDecimal, getBigInteger, getBigInteger, getBool, getBool, getByte, getByte, getBytes, getBytes, getChar, getChar, getDate, getDate, getDouble, getDouble, getEnum, getEnum, getFloat, getFloat, getInt, getInt, getLocalDate, getLocalDate, getLocalDateTime, getLocalDateTime, getLocalTime, getLocalTime, getLong, getLong, getNumber, getNumber, getObject, getShort, getShort, getSqlTime, getSqlTime, getSqlTimestamp, getSqlTimestamp, getString, getString
-
Field Details
-
DEFAULT_CHARSET
默认字符集 -
EXT_NAME
默认配置文件扩展名- See Also:
-
charset
本设置对象的字符集 -
isUseVariable
protected boolean isUseVariable是否使用变量 -
resource
protected org.miaixz.bus.core.io.resource.Resource resource设定文件的资源
-
-
Constructor Details
-
Setting
public Setting()空构造 -
Setting
构造- Parameters:
path- 相对路径或绝对路径
-
Setting
构造- Parameters:
path- 相对路径或绝对路径isUseVariable- 是否使用变量
-
Setting
构造,使用相对于Class文件根目录的相对路径- Parameters:
path- 相对路径或绝对路径charset- 字符集isUseVariable- 是否使用变量
-
Setting
构造- Parameters:
configFile- 配置文件对象charset- 字符集isUseVariable- 是否使用变量
-
Setting
public Setting(org.miaixz.bus.core.io.resource.Resource resource, Charset charset, boolean isUseVariable) 构造- Parameters:
resource- Setting的Resourcecharset- 字符集isUseVariable- 是否使用变量
-
Setting
构造- Parameters:
resource- Setting的Resourceloader- 自定义配置文件加载器
-
-
Method Details
-
of
构建一个空的Setting,用于手动加入参数- Returns:
- Setting
-
load
重新加载配置文件- Returns:
- this
-
autoLoad
public void autoLoad()在配置文件变更时自动加载 -
autoLoad
在配置文件变更时自动加载- Parameters:
callback- 加载完成回调
-
stopAutoLoad
public void stopAutoLoad()停止自动加载 -
getSettingUrl
获得设定文件的URL- Returns:
- 获得设定文件的路径
-
getSettingPath
获得设定文件的路径- Returns:
- 获得设定文件的路径
-
size
public int size()键值总数 -
getObjByGroup
- Specified by:
getObjByGroupin interfaceorg.miaixz.bus.core.lang.getter.GroupedTypeGetter<CharSequence,CharSequence>
-
getAndRemove
获取并删除键值对,当指定键对应值非空时,返回并删除这个值,后边的键对应的值不再查找- Parameters:
keys- 键列表,常用于别名- Returns:
- 字符串值
-
getMap
获得指定分组的所有键值对,此方法获取的是原始键值对,获取的键值对可以被修改- Parameters:
group- 分组- Returns:
- map
-
getSetting
获取group分组下所有配置键值对,组成新的Setting- Parameters:
group- 分组- Returns:
- Setting
-
getProperties
获取group分组下所有配置键值对,组成新的Properties- Parameters:
group- 分组- Returns:
- Properties对象
-
getProps
获取group分组下所有配置键值对,组成新的Props- Parameters:
group- 分组- Returns:
- Props对象
-
store
public void store()持久化当前设置,会覆盖掉之前的设置 持久化不会保留之前的分组,注意如果配置文件在jar内部或者在exe中,此方法会报错。 -
store
持久化当前设置,会覆盖掉之前的设置 持久化不会保留之前的分组- Parameters:
absolutePath- 设置文件的绝对路径
-
store
持久化当前设置,会覆盖掉之前的设置 持久化不会保留之前的分组- Parameters:
file- 设置文件
-
toProps
转换为Props对象,原分组变为前缀- Returns:
Props对象
-
getGroupedMap
获取GroupedMap- Returns:
- GroupedMap
-
getGroups
获取所有分组- Returns:
- 获得所有分组名
-
setVarRegex
设置变量的正则 正则只能有一个group表示变量本身,剩余为字符 例如 \$\{(name)\}表示${name}变量名为name的一个变量表示- Parameters:
regex- 正则- Returns:
- this
-
setLogIfNull
设置当获取key对应值为null时是否打印debug日志提示用户- Parameters:
logIfNull- 当获取key对应值为null时是否打印debug日志提示用户- Returns:
- this
-
isEmpty
某个分组对应的键值对是否为空- Parameters:
group- 分组- Returns:
- 是否为空
-
containsKey
指定分组中是否包含指定key- Parameters:
group- 分组key- 键- Returns:
- 是否包含key
-
containsValue
指定分组中是否包含指定值- Parameters:
group- 分组value- 值- Returns:
- 是否包含值
-
putByGroup
将键值对加入到对应分组中- Parameters:
key- 键group- 分组value- 值- Returns:
- 此key之前存在的值,如果没有返回null
-
remove
从指定分组中删除指定值- Parameters:
group- 分组key- 键- Returns:
- 被删除的值,如果值不存在,返回null
-
putAll
加入多个键值对到某个分组下- Parameters:
group- 分组m- 键值对- Returns:
- this
-
addSetting
添加一个Stting到主配置中- Parameters:
setting- Setting配置- Returns:
- this
-
clear
清除指定分组下的所有键值对- Parameters:
group- 分组- Returns:
- this
-
keySet
指定分组所有键的Set- Parameters:
group- 分组- Returns:
- 键Set
-
values
指定分组下所有值- Parameters:
group- 分组- Returns:
- 值
-
entrySet
指定分组下所有键值对- Parameters:
group- 分组- Returns:
- 键值对
-
set
设置值- Parameters:
key- 键value- 值- Returns:
- this
-
setFields
通过lambda批量设置值 实际使用时,可以使用getXXX的方法引用来完成键值对的赋值:User user = GenericBuilder.of(User::new).with(User::setUsername, "bus").build(); Setting.of().setFields(user::getNickname, user::getUsername);
- Parameters:
fields- lambda,不能为空- Returns:
- this
-
setByGroup
将键值对加入到对应分组中 此方法用于与getXXX统一参数顺序- Parameters:
key- 键group- 分组value- 值- Returns:
- 此key之前存在的值,如果没有返回null
-
isEmpty
public boolean isEmpty() -
containsKey
默认分组(空分组)中是否包含指定key对应的值- Specified by:
containsKeyin interfaceMap<String,String> - Parameters:
key- 键- Returns:
- 默认分组中是否包含指定key对应的值
-
containsValue
默认分组(空分组)中是否包含指定值- Specified by:
containsValuein interfaceMap<String,String> - Parameters:
value- 值- Returns:
- 默认分组中是否包含指定值
-
get
获取默认分组(空分组)中指定key对应的值 -
put
将指定键值对加入到默认分组(空分组)中 -
remove
移除默认分组(空分组)中指定值 -
putAll
将键值对Map加入默认分组(空分组)中 -
clear
public void clear()清空默认分组(空分组)中的所有键值对 -
keySet
获取默认分组(空分组)中的所有键列表 -
values
获取默认分组(空分组)中的所有值列表 -
entrySet
获取默认分组(空分组)中的所有键值对列表 -
hashCode
public int hashCode() -
equals
-
toString
-