我正在使用带有SpringBoot 2.1的Java 11构建一个软件系统。我正在考虑配置选项,但到目前为止我发现的所有Spring实现配置的方法都转向其他方向。所以这就是我想要/需要的:
现在,我想有一个中央配置文件,想想Singleton模式,它管理上面列出的所有三个类别的配置值。我的想法是,我可以轻松访问应用程序中的所有内容。
理想情况下,我有一个带有中心函数的单例类,它接受一个config参数并返回相应的值。
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
}
}
启动应用程序时,配置基本上应该这样做
当用户在运行时编辑配置时,需要将相应的值写回属性文件(或者存储它们的位置)
不幸的是,我没有找到这样的东西,我不知道如何让Java Properties和/或Spring Properties / Configurations实现这样的东西。
有谁可以指出我正确的方向或提供一个最小的工作示例?
您可以将属性从MyConfig
类构造函数中的属性文件加载到Immutable Map中。使此不可变映射成为类级别属性,以便您可以使用此属性访问所有属性。
class MyConfig {
public static Map<String, String> immutableMap = null;
private MyConfig() {
Map<String,String> modifieableMap = new HashMap<>();
//code to load properties into modifieableMap
immutableMap = ImmutableMap.copyOf(mutableMap);
}
// 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
}
}
如果用户尝试从Immutable Map添加或删除任何属性,编译器将抛出UnsupportedOperationException
异常