Как установить правильные данные для конфигурационного файла, полученного с облачного сервера конфигурации в Java Spring?
Я использую аннотацию ConfigurationProperties для сопоставления некоторых значений из application.yml с классом Java. Все работает нормально при использовании его с конфигурационным файлом localhost, но когда я выбираю конфигурации из облачной конфигурации, эти значения не могут быть найдены. Я предполагаю, что проблема может заключаться в том, что имя файла конфигурации может отличаться в зависимости от того, какая конфигурация выбрана, и Spring не знает, в каком файле их искать.
@Configuration
@ConfigurationProperties(prefix = "some.prefix")
public class SomeMappedConfigClass {
private String variable1;
private String variable2;
}
и ямл с настройками
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 ответ
Вы можете использовать внешнюю конфигурацию в 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")
}
}