Я строю программную систему, используя Java 11 с SpringBoot 2.1 Я думаю о параметрах конфигурации, но все способы реализации конфигурации в Spring, которые я нашел, пока идут в других направлениях. Вот что я хочу / нужно:
Во-первых, у меня будут некоторые жестко заданные значения конфигурации. Они не должны быть адаптированы через файл конфигурации, который загружается во время выполнения.
Во-вторых, я хочу (внутренний) файл свойств для значений конфигурации. Они (в основном) будут редактироваться только разработчиками и, следовательно, будут служить стандартными значениями при запуске приложения.
- Пример: версия приложения.
Наконец, будут некоторые значения конфигурации, которые пользователь должен будет редактировать во время выполнения, используя некоторый интерфейс.
Теперь я хотел бы иметь центральный файл конфигурации, например шаблон 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
}
}
При запуске приложения конфигурация должна в основном делать
- Загрузка жестко закодированных значений в объект конфигурации (если не указан в самом классе конфигурации)
- Загрузка значений из файла свойств.
- Загруженные значения должны проверяться на достоверность (например, app_port является целым числом [1, 65535]).
- Значения из файла свойств должны быть предварительно зарегистрированы, поэтому пользователь с правами на запись в файл свойств не может «добавить» созданный новый параметр конфигурации, добавив его.
- Значения из файла свойств не должны перезаписывать жестко закодированные значения.
Когда пользователь редактирует конфигурацию во время выполнения, соответствующие значения должны быть записаны обратно в файл свойств (или где бы они ни хранились)
К сожалению, я не нашел ничего подобного, и я не знаю, как получить Свойства Java и / или Свойства / Конфигурации Spring для реализации чего-то подобного.
Кто-нибудь, кто может указать мне правильное направление или привести минимальный рабочий пример?