java - 是否可以从 Java 中的配置文件初始化静态最终变量?
问题描述
我想用 Java 从配置文件中初始化一个静态最终变量。变量是这样的:
public static final String SCHEMA = "my_schema";
由于架构可以更改,我想从配置文件中读取它。但是,我必须使用最终变量,因为在 JPA 中没有其他方法可以在“表”注释中初始化“模式”属性。关键是由于过去的选择,每个环境都位于具有不同模式名称的同一个数据库中。
解决方案
UPD - 编辑以获得更好的解决方案
我能想到的唯一解决方法是在包含最终变量的行之前有另一个非最终私有字符串变量和一个静态初始化块。例如下面的代码将在初始化后产生不同的最终变量
public class TestSmth {
private static String yourCustomSchema;
static {
yourCustomSchema = Math.random() > 0.5 ? "my_schema" : "another_schema";
}
public static final String SCHEMA = yourCustomSchema;
public static void main(String[] args) {
System.out.println(SCHEMA);
}
}
您应该在静态块中实现配置文件加载
这样,在加载类之后,您就可以初始化最终变量并且无法访问非最终私有变量。
推荐阅读
- css - Flatpickr 停止文本输入并删除 Iphone 默认日历
- c# - 在 ASP.NET Core 模块进程内托管 SetBasePath 中使用的目录
- c++ - 为什么我会收到 Wsign 转换警告?
- excel - Range.PasteSpecial 导致运行时错误“1004”
- android - E/FirebaseInstanceId:令牌检索失败:Android Kitkat 及以下版本中的 PHONE_REGISTRATION_ERROR
- salt-stack - Salt状态更改单个现有文件的权限
- botframework - Bot Framework ErrorResponseException:“'from'字段引用的机器人无法识别”
- google-compute-engine - 来自伊朗的 IP 地址在 Compute Engine 中被阻止
- python - Python pandas 定界符打印错误 - 双符号
- postgresql - postgres中的日志序列号真的单调吗?