Как установить правильные данные для конфигурационного файла, полученного с облачного сервера конфигурации в Java Spring? - PullRequest
0 голосов
/ 07 февраля 2019

Я использую ConfigurationProperties аннотацию для сопоставления некоторых значений из application.yml с классом java.Все работает нормально при использовании его с конфигурационным файлом localhost, но когда я выбираю конфигурации из облачной конфигурации, эти значения не могут быть найдены.Я предполагаю, что проблема может заключаться в том, что имя файла конфигурации может отличаться в зависимости от того, какая конфигурация выбрана, и Spring не знает, в каком файле их искать.

@Configuration
@ConfigurationProperties(prefix = "some.prefix")
  public class SomeMappedConfigClass {
    private String variable1;
    private String variable2;
}

и yaml с конфигурациями

some.prefix:
  variable1: abc
  variable2: xyz

Я пытался сопоставить файл конфигурации с помощью PropertySource аннотации, но он ожидает имя файла конфигурации, которое в моем случае может отличаться.

@PropertySource("classpath:some-application.yml")

Есть ли способ передать в PropertySource текущую загруженную конфигурацию независимо от имени файла конфигурации?Журнал, который я получаю после успешной загрузки конфигурации из облачной конфигурации, для приложения: профиль веб-сервера: LOCAL

Located property source: CompositePropertySource {name='configService', propertySources=[MapPropertySource {name='file:central-config/web-server-LOCAL.yml'}]}

1 Ответ

0 голосов
/ 07 февраля 2019

Вы можете использовать внешнюю конфигурацию в classpath.Используйте следующую для передачи конфигурации

-Dspring.config.location=your/config/dir/

Или

-Dspring.config.location=classpath:prop1.properties,classpath:prop2.properties

Используйте код ниже для получения значений свойств.Вы можете использовать любой из методов

@Configuration
public class AppConfig {

    @Value("${config.properties:<default values>}")
    String propvalue;

    @Autowired
    Environment env;


    public void method(){
     String datapath = env.getProperty("data.path")
    }

}
...