Можно ли загружать свойства из веб-службы во время запуска приложения весенней загрузки?

Я создаю новое приложение для весенней загрузки, развертываемое в bluemix (облачное хранилище), которое должно делать следующее:

  1. используйте spring-cloud-cloudfoundry-connector для обнаружения предоставляемой пользователем «службы свойств»: прочтите URL-адрес службы и учетные данные из переменной env VCAP_APPLICATION. Этот шаг завершен.

  2. подключиться к службе свойств через HTTP-вызов, получить ответ JSON, проанализировать отдельные значения свойств и предоставить их как свойства приложения (в объекте Environment?)

Что было бы правильным решением для этого в приложении с весенней загрузкой?

В более старом приложении Spring без загрузки вызов службы свойств будет инициирован в начале жизненного цикла Spring классом, который расширяет PropertySourcesPlaceholderConfigurer, и сбор свойств из службы будет обрабатываться внутри вызова метода postProcessBeanFactory () того же класса.

public class CustomPopertiesFactory 
    extends PropertySourcesPlaceholderConfigurer
    implements EnvironmentAware {

private Properties properties;

getServiceCredentials() {
   // parse VCAP_APPLICATION json
   final String localVcapServices = System.getProperty("VCAP_SERVICES");
  // extract url, username, pwd to connect to the service
}

connectToService () {
   // via HTTP request using RestTemplate
   // parse JSON response and add properties to this.properties
    ... this.properties.put("prop1", valueFromJson);

}


@Override
public void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) throws BeansException {

    getServiceCredentials();

    connectToService();

    // load values from properties service into app properties
    setProperties(properties);
    // continue with lifecycle and load properties from other sources
    super.postProcessBeanFactory(beanFactory);
}

}

Было больно поддерживать и переключаться между облачными и локальными профилями пружины IMO, и мне интересно, есть ли у Spring Boot лучший способ обработки внешних свойств.

1
0
220
1

Ответы 1

В итоге я заменил "службу свойств" на Spring-облако-конфигурация-сервер и используя Spring-облако-конфигурация-клиент
в моем приложении весенней загрузки, чтобы использовать свойства из spring-cloud-config-server.

Другие вопросы по теме