1
mirror of https://github.com/CarmJos/EasyConfiguration.git synced 2026-06-04 18:48:20 +08:00

[2.2.0] 实现内部静态类的自动注册。

This commit is contained in:
2022-04-22 17:16:06 +08:00
parent ab2f898164
commit 51c287a0a7
8 changed files with 47 additions and 19 deletions
@@ -1,5 +1,6 @@
package config.source;
import cc.carm.lib.configuration.core.ConfigInitializer;
import cc.carm.lib.configuration.core.ConfigurationRoot;
import cc.carm.lib.configuration.core.annotation.ConfigComment;
import cc.carm.lib.configuration.core.annotation.ConfigPath;
@@ -26,13 +27,15 @@ public class DemoConfiguration extends ConfigurationRoot {
protected static final ConfigValue<Double> VERSION = ConfiguredValue.of(Double.class, 1.0D);
// 支持通过 Class<?> 变量标注子配置,一并注册。
// 注意: 若对应类也有注解,则优先使用类的注解。
@ConfigPath("impl-test") //支持通过注解修改子配置的主路径,若不修改则以变量名自动生成。
@ConfigComment("Something...") // 支持给子路径直接打注释
public static final Class<?> IMPL = ImplConfiguration.class;
// 可以直接写静态内部类,并通过 Class<?> 声明。
public static final Class<?> SUB_TEST = Sub.class;
// 子配置文件
@ConfigPath("database")
public static final Class<?> DB_CONFIG = DatabaseConfiguration.class;
@ConfigPath("user") // 通过注解规定配置文件中的路径,若不进行注解则以变量名自动生成。
@ConfigComment({"Section类型数据测试"}) // 通过注解给配置添加注释。
@@ -42,10 +45,6 @@ public class DemoConfiguration extends ConfigurationRoot {
.parseValue((section, defaultValue) -> TestModel.deserialize(section))
.serializeValue(TestModel::serialize).build();
// 子配置文件
@ConfigPath("database")
public static final Class<?> DB_CONFIG = DatabaseConfiguration.class;
@ConfigComment({"[ID-UUID] 对照表", "", "用于测试Map类型的解析与序列化保存"})
public static final ConfigValue<Map<Integer, UUID>> USERS = ConfiguredMap
.builder(Integer.class, UUID.class).fromString()
@@ -54,6 +53,10 @@ public class DemoConfiguration extends ConfigurationRoot {
.build();
/**
* 支持内部类的直接注册。
* 注意,需要使用 {@link ConfigInitializer#initialize(Class, boolean, boolean)} 方法,并设定第三个参数为 true。
*/
public static class Sub extends ConfigurationRoot {
@ConfigPath(value = "uuid-value", root = true)
@@ -62,8 +65,6 @@ public class DemoConfiguration extends ConfigurationRoot {
.parseValue((data, defaultValue) -> UUID.fromString(data))
.build();
public static final Class<?> NOTHING = Sub.That.class;
public static class That extends ConfigurationRoot {
public static final ConfigValue<List<UUID>> OPERATORS = ConfiguredList