Class ContextAwareConfig
java.lang.Object
cloud.opencode.base.config.jdk25.ContextAwareConfig
- All Implemented Interfaces:
Config
Context-Aware Configuration
上下文感知配置
Configuration wrapper that provides context-aware value resolution. Supports tenant isolation and request-scoped configuration overrides using JDK 25 ScopedValue.
提供上下文感知值解析的配置包装器。使用JDK 25 ScopedValue支持租户隔离和请求级配置覆盖。
Features | 主要功能:
- Tenant-specific configuration - 租户特定配置
- Request-scoped overrides - 请求级别覆盖
- Transparent delegation - 透明委托
- ScopedValue integration - ScopedValue集成
Usage Examples | 使用示例:
Config baseConfig = OpenConfig.load();
ContextAwareConfig config = new ContextAwareConfig(baseConfig);
// Multi-tenant access
ConfigContext.withTenant("tenant-1", () -> {
// Gets tenants.tenant-1.db.url or falls back to db.url
String dbUrl = config.getString("db.url");
});
// Request-scoped overrides
ConfigContext.withOverrides(Map.of("log.level", "DEBUG"), () -> {
String level = config.getString("log.level"); // -> "DEBUG"
});
Resolution Order | 解析顺序:
- Request-scoped overrides - 请求级覆盖
- Tenant-specific configuration - 租户特定配置
- Base configuration - 基础配置
Security | 安全性:
- Thread-safe: Yes - 线程安全: 是
- Null-safe: Partial (validates inputs) - 空值安全: 部分(验证输入)
- Since:
- JDK 25, opencode-base-config V1.0.0
- Author:
- Leon Soo www.LeonSoo.com
- See Also:
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoidaddListener(ConfigListener listener) Add configuration change listener 添加配置变更监听器voidaddListener(String key, ConfigListener listener) Add listener for specific configuration key 添加指定键的监听器<T> TBind configuration to POJO/Record 绑定配置到POJO/Record<T> voidBind configuration to existing object 绑定配置到现有对象<T> TGet typed configuration value 获取指定类型配置值<T> TGet typed configuration value with default 获取指定类型配置值(带默认值)booleangetBoolean(String key) Get boolean configuration value 获取布尔配置值booleangetBoolean(String key, boolean defaultValue) Get boolean configuration value with default 获取布尔配置值(带默认值)getByPrefix(String prefix) Get all configurations with specified prefix 获取指定前缀的所有配置doubleGet double configuration value 获取双精度配置值doubleGet double configuration value with default 获取双精度配置值(带默认值)getDuration(String key) Get Duration configuration value 获取Duration配置值getDuration(String key, Duration defaultValue) Get Duration configuration value with default 获取Duration配置值(带默认值)intGet integer configuration value 获取整数配置值intGet integer configuration value with default 获取整数配置值(带默认值)getKeys()Get all configuration keys 获取所有配置键<T> List<T> Get list configuration value 获取列表配置值longGet long configuration value 获取长整数配置值longGet long configuration value with default 获取长整数配置值(带默认值)<K,V> Map <K, V> Get map configuration value 获取映射配置值getOptional(String key) Get optional string configuration value 获取Optional字符串配置值<T> Optional<T> getOptional(String key, Class<T> type) Get optional typed configuration value 获取Optional类型配置值Get string configuration value 获取字符串配置值Get string configuration value with default 获取字符串配置值(带默认值)getSubConfig(String prefix) Get sub-configuration by prefix 根据前缀获取子配置booleanCheck if configuration key exists 检查配置键是否存在voidremoveListener(ConfigListener listener) Remove configuration change listener 移除配置变更监听器
-
Constructor Details
-
ContextAwareConfig
-
-
Method Details
-
getString
-
getString
Description copied from interface:ConfigGet string configuration value with default 获取字符串配置值(带默认值) -
getInt
-
getInt
Description copied from interface:ConfigGet integer configuration value with default 获取整数配置值(带默认值) -
getLong
-
getLong
Description copied from interface:ConfigGet long configuration value with default 获取长整数配置值(带默认值) -
getDouble
-
getDouble
Description copied from interface:ConfigGet double configuration value with default 获取双精度配置值(带默认值) -
getBoolean
Description copied from interface:ConfigGet boolean configuration value 获取布尔配置值- Specified by:
getBooleanin interfaceConfig- Parameters:
key- configuration key | 配置键- Returns:
- configuration value | 配置值
-
getBoolean
Description copied from interface:ConfigGet boolean configuration value with default 获取布尔配置值(带默认值)- Specified by:
getBooleanin interfaceConfig- Parameters:
key- configuration key | 配置键defaultValue- default value | 默认值- Returns:
- configuration value or default | 配置值或默认值
-
getDuration
Description copied from interface:ConfigGet Duration configuration value 获取Duration配置值- Specified by:
getDurationin interfaceConfig- Parameters:
key- configuration key | 配置键- Returns:
- configuration value | 配置值
-
getDuration
Description copied from interface:ConfigGet Duration configuration value with default 获取Duration配置值(带默认值)- Specified by:
getDurationin interfaceConfig- Parameters:
key- configuration key | 配置键defaultValue- default value | 默认值- Returns:
- configuration value or default | 配置值或默认值
-
get
Description copied from interface:ConfigGet typed configuration value 获取指定类型配置值 -
get
Description copied from interface:ConfigGet typed configuration value with default 获取指定类型配置值(带默认值) -
getList
Description copied from interface:ConfigGet list configuration value 获取列表配置值 -
getMap
Description copied from interface:ConfigGet map configuration value 获取映射配置值 -
getOptional
-
getOptional
Description copied from interface:ConfigGet optional typed configuration value 获取Optional类型配置值- Specified by:
getOptionalin interfaceConfig- Type Parameters:
T- target type | 目标类型- Parameters:
key- configuration key | 配置键type- target class | 目标类- Returns:
- optional configuration value | Optional配置值
-
getSubConfig
Description copied from interface:ConfigGet sub-configuration by prefix 根据前缀获取子配置- Specified by:
getSubConfigin interfaceConfig- Parameters:
prefix- configuration prefix | 配置前缀- Returns:
- sub-configuration | 子配置
-
getByPrefix
-
hasKey
-
getKeys
-
addListener
Description copied from interface:ConfigAdd configuration change listener 添加配置变更监听器- Specified by:
addListenerin interfaceConfig- Parameters:
listener- configuration listener | 配置监听器
-
addListener
Description copied from interface:ConfigAdd listener for specific configuration key 添加指定键的监听器- Specified by:
addListenerin interfaceConfig- Parameters:
key- configuration key | 配置键listener- configuration listener | 配置监听器
-
removeListener
Description copied from interface:ConfigRemove configuration change listener 移除配置变更监听器- Specified by:
removeListenerin interfaceConfig- Parameters:
listener- configuration listener | 配置监听器
-
bind
Description copied from interface:ConfigBind configuration to POJO/Record 绑定配置到POJO/Record -
bindTo
-