配置
LCGYL Framework 提供了灵活的配置管理系统。
配置文件
在项目的 src/main/resources 目录下创建 application.properties 文件:
properties
# 应用配置
app.name=MyLCGYLApp
app.version=1.0.0
# 插件配置
plugin.scan.packages=com.example.plugins
plugin.auto.load=true
# 日志配置
logging.level=INFO
logging.file=logs/app.log编程式配置
你也可以通过代码进行配置:
java
import com.lcgyl.framework.core.config.Configuration;
import com.lcgyl.framework.core.config.ConfigurationManager;
public class AppConfig {
public static void configure() {
ConfigurationManager manager = new ConfigurationManager();
// 添加配置源
manager.addPropertySource("classpath:application.properties");
// 获取配置
Configuration config = manager.getConfiguration();
String appName = config.getString("app.name");
int port = config.getInt("server.port", 8080); // 带默认值
}
}配置优先级
配置的加载优先级(从高到低):
- 系统属性(
System.getProperty()) - 环境变量(
System.getenv()) application.properties文件- 默认配置
类型转换
配置管理器支持自动类型转换:
java
// 基本类型
String name = config.getString("app.name");
int port = config.getInt("server.port");
boolean enabled = config.getBoolean("feature.enabled");
long timeout = config.getLong("request.timeout");
// 列表
List<String> packages = config.getList("plugin.scan.packages");
// 自定义对象
DatabaseConfig dbConfig = config.getObject("database", DatabaseConfig.class);配置热更新
LCGYL Framework 支持配置热更新:
java
import com.lcgyl.framework.core.config.ConfigurationListener;
// 监听配置变化
config.addListener("app.name", new ConfigurationListener() {
@Override
public void onConfigurationChanged(String key, Object oldValue, Object newValue) {
System.out.println("配置 " + key + " 从 " + oldValue + " 变更为 " + newValue);
}
});最佳实践
1. 使用配置类
java
public record AppConfig(
String name,
String version,
int port
) {
public static AppConfig fromConfiguration(Configuration config) {
return new AppConfig(
config.getString("app.name"),
config.getString("app.version"),
config.getInt("server.port", 8080)
);
}
}2. 环境特定配置
properties
# application.properties
app.name=MyApp
# application-dev.properties
logging.level=DEBUG
# application-prod.properties
logging.level=WARN3. 敏感信息处理
java
// 使用环境变量存储敏感信息
String dbPassword = config.getString("DB_PASSWORD"); // 从环境变量读取