Skip to content

配置

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); // 带默认值
    }
}

配置优先级

配置的加载优先级(从高到低):

  1. 系统属性(System.getProperty()
  2. 环境变量(System.getenv()
  3. application.properties 文件
  4. 默认配置

类型转换

配置管理器支持自动类型转换:

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=WARN

3. 敏感信息处理

java
// 使用环境变量存储敏感信息
String dbPassword = config.getString("DB_PASSWORD"); // 从环境变量读取

下一步

Released under the Apache License 2.0