Как загрузить свойства в среду из zookeeper перед инициализацией bean-компонентов в веб-приложении - PullRequest
0 голосов
/ 08 апреля 2019

Spring основанное веб-приложение: Существующий: контекст загружается из файла ("web.xml"), а свойства, необходимые для приложения, загружаются из файла свойств, указанного в файле контекста xml.

Новое: теперь свойства должны читаться из zookeeper (вместе с файлом свойств). Необходимый Java-код для чтения свойств выполняется с помощью ZookeeperPropertySource

Проблема: куда мне нужно вставить код Java, чтобы свойства загружались из zookeeper вместе с инициализацией контекста приложения?

Мне не удается этого добиться с помощью ApplicationEventListener (так как ContextStartedEvent не запускается автоматически) и BeanFactoryPostProcessor (Среда недоступна для привязки свойств)

1 Ответ

0 голосов
/ 30 мая 2019

Решение:
Создайте новый класс, расширяющий класс «ContextLoaderListener», и переопределите метод «WebApplicationContext createWebApplicationContext (ServletContext sc)». Поскольку WebApplicationContext будет доступен здесь, ZookeeperPropertySource может быть установлен для среды.

Код образца:

@Override
protected WebApplicationContext createWebApplicationContext(ServletContext servletContext) {
    WebApplicationContext webApplicationContext = super.createWebApplicationContext(servletContext);
    loadZookeeperPropertySource(webApplicationContext.getEnvironment());
    return webApplicationContext;
}

loadZookeeperPropertySource (Среда среды) - это метод, при котором источники свойств загружаются из zookeeper с использованием ZookeeperPropertySourceLocator и устанавливаются в среду

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...