带有Spring的java中央配置文件
我正在用Java11和Springboot2.1构建一个软件系统。我正在考虑配置选项,但到目前为止,我在Spring中发现的所有实现配置的方法都指向了其他方向。以下是我想要/需要的:
首先,我将有一些硬编码的配置值。它们不应该通过运行时加载的配置文件进行自适应
- 示例:应用程序名李>
第二,我想要一个(内部)属性文件,用于配置值。这些(大部分)只能由开发人员编辑,因此在启动应用程序时可以作为标准值
- 示例:应用程序版本李>
最后,将有一些配置值,用户应该在运行时使用一些UI编辑这些值
- 示例:应用程序端口
现在,我想要一个中心配置文件,比如Singleton模式,它管理上面列出的所有三个类别的配置值。我的想法是,我可以轻松地从应用程序中的任何地方访问所有这些内容
理想情况下,我会有一个单例类,其中一个中心函数接受一个配置参数并返回相应的值
class MyConfig {
private static singleton = null;
private MyConfig() {}
// needed: some name-value storage management for params
// e.g.: some hardcoded values plus one or more linked property files.
public static String getProperty(String paramName)
// fetch parameter and return it
}
public static String getProperty(String paramName, String returnType)
// fetch parameter and return it cast to the specified returnType
}
public static String setProperty(String paramName, String value)
// persist property value to file
}
}
启动应用程序时,配置基本上应该
- 将硬编码值加载到配置对象中(如果未在配置类本身中指定)
- 从属性文件加载值。
- 必须检查加载的值的有效性(例如,应用程序端口是否为整数[165535])李>
- 属性文件中的值必须预先注册,因此具有属性文件写入权限的用户不能通过添加新配置参数来“添加”该参数李>
- 属性文件中的值不得覆盖硬编码的值李>
当用户在运行时编辑配置时,需要将相应的值写回属性文件(或存储它们的位置)
不幸的是,我没有发现类似的东西,我不知道如何获得Java属性和/或Spring属性/配置来实现类似的东西
谁能给我指出正确的方向或提供一个简单的工作示例
# 1 楼答案
您可以将
MyConfig
类构造函数中的属性文件中的属性加载到不可变映射中。将此不可变映射设置为类级属性,以便可以使用此属性访问所有属性如果用户试图从不可变映射中添加或删除任何属性,编译器将抛出
UnsupportedOperationException
异常