Напишите пользовательский PlaceholderResolver в Spring (например, PropertyPlaceholderConfigurerResolver)
Я использую MBeans в веб-приложении для свойств приложения, которые многие люди обычно помещают в файлы свойств. MBeans будут записываться и считываться из базы данных для сохранения.
Я ищу способ предоставления свойств моего приложения (от (m)bean-компонентов Spring (например, Spring EL, applicationContext.xml). Во многих приложениях используется PropertyPlaceholderConfigurerResolver, но так как у меня есть только обычный (m) Бин Я хочу раскрыть свойства бина языку выражений Spring.
Я посмотрел на PropertyPlaceholderConfigurerResolver, чтобы увидеть, как свойства отображаются в Spring Expression Language, но я не вижу как.
Я думаю, что каким-то образом мне нужно написать собственный PlaceholderResolver, который обращается к моим MBeans. Я уже несколько часов гуглю, поэтому буду признателен за подсказку:)
С уважением
1 ответ
Я не знаком с MBeans, но наше приложение получает настройки приложения из базы данных и затем использует их в контексте нашего приложения. Мы просто расширяем PropertySourcesPlaceholderConfigurer, а затем вам просто нужно вызвать setPropertySources()
метод. В нашем конструкторе у нас есть что-то вроде этого:
MutablePropertySources propertySources = new MutablePropertySources();
Map<String, Object> propertiesFromDB = getPropertiesFromDB();
MapPropertySource propertySource = new MapPropertySource("propsFromDB", propertiesFromDB);
propertySources.addFirst(propertySource);
setPropertySources(propertySources);