Class ConfigRegistry
java.lang.Object
io.github.theword.queqiao.core.config.schema.ConfigRegistry
配置注册中心(Schema)
职责:注册配置项与区块、按路径查找、遍历整棵树、检测重复与父子冲突。
区块由配置项的路径自动派生:注册 websocket_server.enable 会自动建立
websocket_server 区块;注册 addons.llm.model 会自动建立
addons 与 addons.llm。因此显式注册区块只用于补充注释与空行排版。
并发:读用读锁、注册用写锁;写盘等长操作应先取 snapshot(),
再基于快照工作,不必长时间持锁。
- Since:
- 0.6.12
-
Field Summary
Fields -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionConfigKey<?> findByPath(String path) 按路径查找配置项voidfreeze()冻结注册中心。运行时启动完成配置声明后调用;之后不得再注册配置项或区块。booleanisFrozen()void注册一个配置项voidregister(ConfigSectionNode section) 注册(或更新)一个区块的排版元数据intsize()snapshot()生成不可变 Schema 快照
-
Field Details
-
ROOT_PATH
根区块路径- See Also:
-
-
Constructor Details
-
ConfigRegistry
public ConfigRegistry()
-
-
Method Details
-
register
注册一个配置项- Parameters:
key- 配置项定义- Throws:
ConfigValidationException- 路径重复,或与已有配置项构成父子冲突
-
register
注册(或更新)一个区块的排版元数据区块路径通常已由配置项自动派生;此处用于补充注释与前后空行。
- Parameters:
section- 区块- Throws:
ConfigValidationException- 该路径已是配置项
-
findByPath
按路径查找配置项- Parameters:
path- 点分路径- Returns:
- 配置项;未注册时返回 null
-
size
public int size()- Returns:
- 已注册配置项数量
-
freeze
public void freeze()冻结注册中心。运行时启动完成配置声明后调用;之后不得再注册配置项或区块。 -
isFrozen
public boolean isFrozen()- Returns:
- 注册中心是否已冻结
-
snapshot
生成不可变 Schema 快照子节点顺序 = 声明顺序:区块在"它的第一个配置项出现的位置"被挂到父区块上, 因此同一份 Schema 多次生成的 YAML 结构完全一致(方案 §32.2 要求 deterministic)。
- Returns:
- 配置树快照
-