在我的application.properties文件中,我具有以下由3个属性组成的属性:
eureka.instance.appname=${spring.application.name}${spring.profiles.active}${variant:}
我的意图是,当不初始化variant属性时,应通过串联variant属性的默认空字符串来形成eureka.instance.appname,以便该值将为$ {spring.application.name} $ {spring .profiles.active}。
但是如果我以上述指定的格式定义最终字符串,则格式不正确。我找不到分配空字符串作为变体默认值的方法。 当我使用$ {variant:''}时,当spring.application.name为SERVICE且spring.profiles.active为DEV且variant未分配值时,选择默认值',我得到一个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 :(得分: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);
}
};
}