Package org.aoju.bus.setting.magic
Class PopSetting
java.lang.Object
org.aoju.bus.setting.magic.AbstractSetting
org.aoju.bus.setting.magic.PopSetting
- All Implemented Interfaces:
Serializable,Map<String,,String> org.aoju.bus.core.getter.GroupedGetter<CharSequence,,CharSequence> org.aoju.bus.core.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本设置对象的字符集protected boolean是否使用变量protected org.aoju.bus.core.io.resource.Resource设定文件的资源 -
Constructor Summary
ConstructorsConstructorDescription空构造PopSetting(File configFile, Charset charset, boolean isUseVariable) 构造PopSetting(String path) 构造PopSetting(String path, boolean isUseVariable) 构造PopSetting(String path, Charset charset, boolean isUseVariable) 构造,使用相对于Class文件根目录的相对路径PopSetting(org.aoju.bus.core.io.resource.Resource resource, Charset charset, boolean isUseVariable) 构造 -
Method Summary
Modifier and TypeMethodDescriptionaddSetting(PopSetting setting) 添加一个Stting到主配置中voidautoLoad(boolean autoReload) 在配置文件变更时自动加载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获取所有分组获取并删除键值对,当指定键对应值非空时,返回并删除这个值,后边的键对应的值不再查找getObjectByGroup(CharSequence key, CharSequence group, Object defaultValue) getProperties(String group) 获得group对应的子Properties获得group对应的子PropsgetSetting(String group) 获得group对应的子Setting获得设定文件的路径获得设定文件的URLinthashCode()boolean初始化设定文件booleanisEmpty()boolean某个分组对应的键值对是否为空keySet()获取默认分组(空分组)中的所有键列表指定分组所有键的Setbooleanload()重新加载配置文件static PopSettingof()构建一个空的Setting,用于手动加入参数将指定键值对加入到默认分组(空分组)中加入多个键值对到某个分组下void将键值对Map加入默认分组(空分组)中putByGroup(String key, String group, String value) 将键值对加入到对应分组中移除默认分组(空分组)中指定值从指定分组中删除指定值设置值setByGroup(String key, String group, String value) 将键值对加入到对应分组中 此方法用于与getXXX统一参数顺序setCharset(Charset charset) 自定义字符编码通过lambda批量设置值 实际使用时,可以使用getXXX的方法引用来完成键值对的赋值:setLogIfNull(boolean logIfNull) 设置当获取key对应值为null时是否打印debug日志提示用户setVarRegex(String regex) 设置变量的正则 正则只能有一个group表示变量本身,剩余为字符 例如 \$\{(name)\}表示${name}变量名为name的一个变量表示intsize()键值总数voidstore()持久化当前设置,会覆盖掉之前的设置 持久化不会保留之前的分组,注意如果配置文件在jar内部或者在exe中,此方法会报错。void持久化当前设置,会覆盖掉之前的设置 持久化不会保留之前的分组void持久化当前设置,会覆盖掉之前的设置 持久化不会保留之前的分组转换为Properties对象,原分组变为前缀toString()values()获取默认分组(空分组)中的所有值列表指定分组下所有值Methods inherited from class org.aoju.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.aoju.bus.core.getter.GroupedGetter
getBigDecimalByGroup, getBigDecimalByGroup, getBigIntegerByGroup, getBigIntegerByGroup, getBoolByGroup, getBoolByGroup, getByGroup, getByGroup, getByteByGroup, getByteByGroup, getCharByGroup, getCharByGroup, getDoubleByGroup, getDoubleByGroup, getIntByGroup, getIntByGroup, getLongByGroup, getLongByGroup, getObjectByGroup, getShortByGroup, getShortByGroup, getStringByGroup, getStringByGroupMethods inherited from interface java.util.Map
compute, computeIfAbsent, computeIfPresent, forEach, getOrDefault, merge, putIfAbsent, remove, replace, replace, replaceAllMethods inherited from interface org.aoju.bus.core.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
-
charset
本设置对象的字符集 -
isUseVariable
protected boolean isUseVariable是否使用变量 -
resource
protected org.aoju.bus.core.io.resource.Resource resource设定文件的资源
-
-
Constructor Details
-
PopSetting
public PopSetting()空构造 -
PopSetting
-
PopSetting
构造- Parameters:
path- 相对路径或绝对路径isUseVariable- 是否使用变量
-
PopSetting
-
PopSetting
-
PopSetting
public PopSetting(org.aoju.bus.core.io.resource.Resource resource, Charset charset, boolean isUseVariable) 构造- Parameters:
resource-Resourcecharset- 字符集isUseVariable- 是否使用变量
-
-
Method Details
-
of
-
init
public boolean init(org.aoju.bus.core.io.resource.Resource resource, Charset charset, boolean isUseVariable) 初始化设定文件- Parameters:
resource-Resourcecharset- 字符集isUseVariable- 是否使用变量- Returns:
- 成功初始化与否
-
load
public boolean load()重新加载配置文件- Returns:
- 是否加载成功
-
autoLoad
public void autoLoad(boolean autoReload) 在配置文件变更时自动加载- Parameters:
autoReload- 是否自动加载
-
autoLoad
-
getSettingUrl
-
getSettingPath
-
size
-
getObjectByGroup
- Specified by:
getObjectByGroupin interfaceorg.aoju.bus.core.getter.GroupedGetter<CharSequence,CharSequence>
-
getAndRemove
-
getMap
-
getSetting
获得group对应的子Setting- Parameters:
group- 分组- Returns:
PopSetting
-
getProperties
获得group对应的子Properties- Parameters:
group- 分组- Returns:
Properties
-
getProps
获得group对应的子Props- Parameters:
group- 分组- Returns:
Properties
-
store
public void store()持久化当前设置,会覆盖掉之前的设置 持久化不会保留之前的分组,注意如果配置文件在jar内部或者在exe中,此方法会报错。 -
store
持久化当前设置,会覆盖掉之前的设置 持久化不会保留之前的分组- Parameters:
absolutePath- 设置文件的绝对路径
-
store
-
toProperties
-
getGroupMap
-
getGroups
-
setVarRegex
设置变量的正则 正则只能有一个group表示变量本身,剩余为字符 例如 \$\{(name)\}表示${name}变量名为name的一个变量表示- Parameters:
regex- 正则- Returns:
- this
-
setCharset
-
setLogIfNull
设置当获取key对应值为null时是否打印debug日志提示用户- Parameters:
logIfNull- 当获取key对应值为null时是否打印debug日志提示用户- Returns:
- this
-
isEmpty
-
containsKey
-
containsValue
-
putByGroup
-
remove
-
putAll
加入多个键值对到某个分组下- Parameters:
group- 分组m- 键值对- Returns:
- this
-
addSetting
添加一个Stting到主配置中- Parameters:
setting- Setting配置- Returns:
- this
-
clear
-
keySet
-
values
-
entrySet
-
set
-
setFields
通过lambda批量设置值 实际使用时,可以使用getXXX的方法引用来完成键值对的赋值:User user = GenericBuilder.of(User::new).with(User::setUsername, "bus").build(); PopSetting.of().setFields(user::getNickname, user::getUsername);- Parameters:
fields- lambda,不能为空- Returns:
- this
-
setByGroup
将键值对加入到对应分组中 此方法用于与getXXX统一参数顺序- Parameters:
key- 键group- 分组value- 值- Returns:
- 此key之前存在的值,如果没有返回null
-
isEmpty
-
containsKey
默认分组(空分组)中是否包含指定key对应的值- Specified by:
containsKeyin interfaceMap<String,String> - Parameters:
key- 键- Returns:
- 默认分组中是否包含指定key对应的值
-
containsValue
默认分组(空分组)中是否包含指定值- Specified by:
containsValuein interfaceMap<String,String> - Parameters:
value- 值- Returns:
- 默认分组中是否包含指定值
-
get
-
put
-
remove
-
putAll
-
clear
-
keySet
-
values
-
entrySet
-
hashCode
-
equals
-
toString
-