Используйте пустую строку в качестве значения по умолчанию для свойства, чтобы ее можно было объединить с другими строками для формирования значения

В моем файле 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, а вариант не имеет значения

0
0
368
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

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.

Sundara Raghavan 12.06.2019 18:10

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