首页 > 解决方案 > 在没有 Main 方法的 Java 类库中从文件中读取数据

问题描述

我有一组 Java 控制台应用程序,它们充当我系统的后端服务,并且我将每个应用程序打包到自己的 Jar 中。我还编写了一个类库(例如CoreLibrary),它由一组类组成,并且没有main()自己的执行方法。这个 CoreLibrary 是每个服务的依赖项,因此我将相同的 CoreLibrary Jar 捆绑到每个服务 Jar 中。

我的 CoreLibrary 中的许多类使用一些常量值(配置),我为其定义了一个类,例如:

public class Config {
    public static final String serverIP = "localhost:9092";
}

现在我想将此配置转换为 config.json File,例如:

{
    "serverIP" : "localhost:9092"
}

并通过以下方式访问它:

public class Config {
    public static final String serverIP = getConfigValue();

    private String getConfigValue()
    {
        try {
            Reader reader = Files.newBufferedReader(pathToConfig);
            CoreConfig item = gson.fromJson(reader, CoreConfig.class);
            reader.close();
            return item.getServerIP();

        } catch (IOException e) {
            e.printStackTrace();
            return "localhost:9091";
        }
    }
}

假设在我的应用程序的 Jar 之外有一个配置文件将允许我在每次运行服务 Jar 之前更改文件内容(值),而不是每次更改此值时都为每个服务生成 Jar 的过程。我也不想从每个服务的文件中加载值,而是在启动时加载值。

在 Java 中是否有正确的方法来实现这一点(从类库中的文件中加载值)?它甚至会被认为是一种有效的代码实践,因为如果无法读取文件或 json 对象可能item.getServerIP()会产生?NullPointerException

注意:我没有使用 Spring 或任何此类框架。它是纯 Java 11 代码并使用 gson 库。

标签: javafile-ioconfig

解决方案


推荐阅读