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

В моем файле application.properties у меня есть следующее свойство, которое формируется путем объединения трех свойств:

eureka.instance.appname=${spring.application.name}${spring.profiles.active}${variant:}

Мое намерение состоит в том, чтобы, когда свойство варианта не было инициализировано, имя eureka.instance.appname былоформируется путем конкатенации пустой строки по умолчанию для свойства варианта, так что значение будет только $ {spring.application.name} $ {spring.profiles.active}.

Но окончательная строка не сформирована должным образом, если я определю ее в указанном выше формате.Я не мог найти способ назначить пустую строку в качестве значения по умолчанию для варианта.Когда я использую $ {option: ''}, тогда как spring.application.name - это SERVICE, а spring.profiles.active - DEV, а варианту не присвоено значение, выбирается значение по умолчанию ', я получаю имя eureka.instance.appnameas 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, а варианту не присвоено значение

1 Ответ

1 голос
/ 12 июня 2019

eureka.instance.appname=${spring.application.name}${spring.profiles.active}${variant:} это работает для меня.

Другой способ: Вы можете PropertySourcesPlaceholderConfigurer проверить значение варианта.Если ноль, то он может изменить его на пустую строку.

    @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);
            }
        };
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...