Java獲取系統環境變量的方法

java中獲取環境變量:

STEPS:
1. Try to get environment from JVM system property
m_env = System.getProperty(“env”);
2. Try to get environment from file "server.properties"
m_env = m_serverProperties.getProperty(“env”);
3. Try to get environment from OS environment variable
m_env = System.getenv(“ENV”);

public class EnvUtil {

    private static final String SERVER_PROPERTIES_LINUX = "/etc/sys_env.ini";
    private static final String SERVER_PROPERTIES_WINDOWS = "C:/opt/settings/server.properties";

    private static Properties m_serverProperties = new Properties();
    private static String m_env;

    private static class LazyHolder{
        // final 爲了防止內部誤操作,cglib的代理模式以子類方式實現,可能會修改該值
        private static final EnvUtil INSTANCE = new EnvUtil();
    }

    // 提供靜態方法獲取實例
    // final 確保別人不能覆蓋
    public static final EnvUtil getInstance() {
        return LazyHolder.INSTANCE;
    }

    private EnvUtil() {
        initialize();
    }

    public String getEnv(){
        return m_env;
    }
    
    private static void initialize(){
        try {
            String path = Utils.isOSWindows() ? SERVER_PROPERTIES_WINDOWS : SERVER_PROPERTIES_LINUX;

            File file = new File(path);
            if (file.exists() && file.canRead()) {
                FileInputStream fis = new FileInputStream(file);
                initialize(fis);
            }else{
                initialize(null);
            }

        } catch (Throwable ex) {

        }
    }

    private static void initialize(InputStream in) {
        try {
            if (in != null) {
                try {
                    m_serverProperties.load(new InputStreamReader(new BOMInputStream(in), StandardCharsets.UTF_8));
                } finally {
                    in.close();
                }
            }
            initEnvType();
        } catch (Throwable ex) {
            log.error("獲取系統環境變量錯誤:"+ex.getMessage());
        }
    }

    private static void initEnvType() {

        // 1. Try to get environment from JVM system property
        m_env = System.getProperty("env");
        if (!Utils.isBlank(m_env)) {
            m_env = m_env.trim();
            return;
        }

        // 2. Try to get environment from file "server.properties"
        m_env = m_serverProperties.getProperty("env");
        if (!Utils.isBlank(m_env)) {
            m_env = m_env.trim();
            return;
        }

        // 3. Try to get environment from OS environment variable
        m_env = System.getenv("ENV");
        if (!Utils.isBlank(m_env)) {
            m_env = m_env.trim();
            return;
        }

        m_env = null;
        // 4. return environment to null.
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章