В моем файле application.properties у меня есть следующее свойство, которое формируется путем объединения 3 свойств:
eureka.instance.appname=${spring.application.name}${spring.profiles.active}${variant:}
Мое намерение состоит в том, что когда свойство варианта не инициализировано, имя eureka.instance.appname должно быть сформировано путем объединения пустой строки по умолчанию для свойства варианта, чтобы значение было ${spring.application.name}${spring.profiles. активный} один.
Но окончательная строка не формируется должным образом, если я определяю ее в указанном выше формате. Я не смог найти способ назначить пустую строку значением по умолчанию для варианта. Когда я использую ${вариант:''}, в то время как spring.application.name — это SERVICE, а spring.profiles.active — это DEV, а варианту не присваивается значение, выбирается значение по умолчанию ', я получаю eureka.instance.appname как SERVICEDEV''.
Что я пробовал до сих пор:
eureka.instance.appname=${spring.application.name}${spring.profiles.active}${variant:}
не работает и скорее всего вылетает.
eureka.instance.appname=${spring.application.name}${spring.profiles.active}${variant:''}
дает SERVICEDEV '', где spring.application.name - это SERVICE, а spring.profiles.active - это DEV, а вариант не имеет значения
eureka.instance.appname=${spring.application.name}${spring.profiles.active}${variant:}
это работает для меня.
Другой путь: Вы можете проверить PropertySourcesPlaceholderConfigurer
значение варианта. Если null, то он может изменить его на пустую строку.
@Bean
public static PropertySourcesPlaceholderConfigurer propertySourcesPlaceholderConfigurer() {
return new PropertySourcesPlaceholderConfigurer() {
@Override
public void setEnvironment(Environment environment) {
if (environment instanceof ConfigurableEnvironment && environment.getProperty("variant") == null) {
ConfigurableEnvironment env = (ConfigurableEnvironment) environment;
env.getPropertySources().addLast(new MapPropertySource("Public key default", Collections.singletonMap("variant", "")));
}
super.setEnvironment(environment);
}
};
}
Да, первый способ указать значение пустой строки по умолчанию для меня тоже работает. Я понял это только после публикации этого вопроса. Возможно, я что-то напутал в своей цепочке devops.