package com.mini.capi.config.component;

import lombok.Getter;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.SpringBootVersion;
import org.springframework.context.EnvironmentAware;
import org.springframework.core.env.Environment;
import org.springframework.stereotype.Component;

@Component
public class AppRuntimeInfo implements EnvironmentAware{

    // 应用名（默认 unknown-app）
    @Getter
    @Value("${spring.application.name:unknown-app}")
    private String appName;
    // 服务端口（默认 8080，支持随机端口）
    @Getter
    @Value("${server.port:8080}")
    private Integer serverPort;
    // 激活的环境（默认 default）
    @Getter
    @Value("${spring.profiles.active:default}")
    private String activeProfile;

    // JDK 版本
    @Getter
    @Value("${java.version:unknown}")
    private String jdkVersion;

    // Spring 环境上下文（用于灵活获取配置）
    private Environment environment;

    // 获取 Spring Boot 版本
    public String getSpringBootVersion() {
        return SpringBootVersion.getVersion();
    }

    // 获取所有激活的环境（支持多环境，如 dev,test）
    public String[] getActiveProfiles() {
        return environment.getActiveProfiles();
    }

    // 灵活获取配置项（支持默认值）
    public String getConfigValue(String key, String defaultValue) {
        return environment.getProperty(key, defaultValue);
    }

    // 实现 EnvironmentAware 接口，注入 Environment
    @Override
    public void setEnvironment(Environment environment) {
        this.environment = environment;
    }
}
