java - 在没有 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 库。
解决方案
推荐阅读
- pandas - 日期时间重新格式化每周列
- architecture - 最佳实践(GRPC 通信)架构微服务(List vs Loop)
- spring-boot - 一个项目中的 Spring Data JDBC 和 Hibernate JPA
- consul - 需要通过 API 或 Consul 等工具动态更改 linux conf/yaml 文件的建议
- java - Javax 验证不包括字段名称
- php - 如何在 PHP 中回显 SQL 行的位置编号?
- spring-boot - Spring Data JPA 分页 HHH000104
- c# - NLog - 如果消息以某些单词开头,则写入另一个目标
- javascript - javascript 切换单击在 addEventListener 中不起作用
- python - Python:读取目录中的所有文件以在while循环中观看