You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Java中配置开发/生产等环境(无需Spring/Maven)

Java多环境配置:无框架实现指南

一、先理清核心概念:为什么搜不到你要的内容

你搜「java environment variables」出来的都是系统级配置(比如JAVA_HOME),是因为混淆了两个不同层面的概念:

  • 系统级环境变量:操作系统提供给Java进程的全局参数,用来告诉系统Java的安装路径、全局依赖位置等,属于进程启动前的全局设置。
  • 应用级多环境配置:是应用自身根据运行场景(开发/生产)加载的自定义参数,和系统环境变量完全是两回事——你应该搜「Java application environment-specific configuration」这类关键词才对。

Java本身没有内置的“多环境配置”机制,但可以通过系统属性、资源加载这两个基础能力,自己实现类似JS的.env文件效果。

二、官方文档获取途径

不用去外网,JDK自带的本地文档就能找到核心内容:

  • 打开JDK安装目录下的docs/api文件夹,直接用浏览器打开index.html,就能查看所有核心类的官方说明。
  • 重点看这几个类的文档:
    • java.lang.System:掌握getProperty()(读取系统参数)、getenv()(读取操作系统环境变量)方法。
    • java.util.Properties:了解如何加载、读取键值对配置文件。

三、无框架实现多环境配置(类似JS的.env)

直接上可落地的步骤,完全不用Spring/Maven这类工具:

1. 准备配置文件

在项目的资源目录(比如src/main/resources)下创建3个配置文件:

  • config.properties:默认兜底配置(当指定环境的文件不存在时用)
  • config.dev.properties:开发环境配置
  • config.prod.properties:生产环境配置

每个文件里写键值对,比如:

# config.dev.properties
db.path=./dev_db.sqlite
# config.prod.properties
db.path=/opt/app/prod_db.sqlite

2. 启动时指定环境

启动Java程序时,通过系统参数指定当前环境:

# 开发环境启动
java -jar your-app.jar -Denv=dev
# 生产环境启动
java -jar your-app.jar -Denv=prod

如果不想用系统参数,也可以用操作系统环境变量:

# Linux/macOS
export APP_ENV=prod && java -jar your-app.jar
# Windows
set APP_ENV=prod && java -jar your-app.jar

3. 写一个配置加载工具类

这个类负责根据指定的环境,自动加载对应的配置文件:

import java.io.InputStream;
import java.util.Properties;

public class ConfigLoader {
    private static final Properties props = new Properties();

    static {
        // 优先读系统参数,没有的话读环境变量,默认用dev
        String env = System.getProperty("env");
        if (env == null || env.isEmpty()) {
            env = System.getenv("APP_ENV");
            env = env == null ? "dev" : env;
        }

        // 加载对应环境的配置文件
        String configFile = "config." + env + ".properties";
        try (InputStream is = ConfigLoader.class.getClassLoader().getResourceAsStream(configFile)) {
            if (is != null) {
                props.load(is);
            } else {
                // 环境文件不存在时加载默认配置
                try (InputStream defaultIs = ConfigLoader.class.getClassLoader().getResourceAsStream("config.properties")) {
                    if (defaultIs != null) {
                        props.load(defaultIs);
                    }
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    // 对外提供获取配置的方法
    public static String get(String key) {
        return props.getProperty(key);
    }
}

4. 在代码中使用配置

直接调用工具类获取参数就行:

public class Main {
    public static void main(String[] args) {
        String dbPath = ConfigLoader.get("db.path");
        System.out.println("当前数据库路径:" + dbPath);
        // 这里写初始化嵌入式数据库的逻辑...
    }
}

内容的提问来源于stack exchange,提问作者vktop

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 03:50:39