Class PlaceholderResolver
java.lang.Object
cloud.opencode.base.config.placeholder.PlaceholderResolver
Placeholder Resolver
占位符解析器
Resolves placeholders in configuration values with support for nested placeholders and default values.
解析配置值中的占位符,支持嵌套占位符和默认值。
Features | 主要功能:
- Placeholder syntax: ${key} - 占位符语法: ${key}
- Default values: ${key:default} - 默认值: ${key:default}
- Nested placeholders - 嵌套占位符
- Recursion depth limit - 递归深度限制
Usage Examples | 使用示例:
Map<String, String> props = Map.of(
"base.url", "http://localhost",
"api.url", "${base.url}/api",
"db.host", "${DB_HOST:localhost}"
);
PlaceholderResolver resolver = new PlaceholderResolver(props::get);
resolver.resolve("${api.url}"); // -> "http://localhost/api"
resolver.resolve("${db.host}"); // -> "localhost" (using default)
resolver.resolve("${base.url}/v1"); // -> "http://localhost/v1"
resolver.resolve("${${env}.database}"); // -> nested resolution
Supported Syntax | 支持的语法:
${key} - Simple placeholder
${key:default} - With default value
${${nested}} - Nested placeholder
prefix${key}suffix - Embedded placeholder
Performance | 性能特性:
- Time complexity: O(n*d) where d is recursion depth - 时间复杂度: O(n*d)
- Max recursion depth: 10 (configurable) - 最大递归深度: 10
Security | 安全性:
- Thread-safe: Yes - 线程安全: 是
- Recursion protection - 递归保护
- Since:
- JDK 25, opencode-base-config V1.0.0
- Author:
- Leon Soo www.LeonSoo.com
- See Also:
-
Constructor Summary
ConstructorsConstructorDescriptionPlaceholderResolver(Function<String, String> propertyResolver) Create placeholder resolver with default depth limit 创建默认深度限制的占位符解析器PlaceholderResolver(Function<String, String> propertyResolver, int maxRecursionDepth) Create placeholder resolver with custom depth limit 创建自定义深度限制的占位符解析器 -
Method Summary
-
Constructor Details
-
PlaceholderResolver
-
PlaceholderResolver
-
-
Method Details
-
resolve
Resolve placeholders in value 解析值中的占位符Examples | 示例:
resolve("${key}") -> value of "key" resolve("${key:default}") -> value of "key" or "default" resolve("prefix${key}suffix") -> "prefix" + value + "suffix" resolve("no placeholders") -> "no placeholders"- Parameters:
value- value to resolve | 要解析的值- Returns:
- resolved value | 解析后的值
- Throws:
OpenConfigException- if placeholder cannot be resolved | 如果占位符无法解析
-