Spring 使用空字符串作为属性的默认值,以便可以将其与其他字符串连接以形成值
在我的application.properties文件中,我有以下由3个属性连接而成的属性:Spring 使用空字符串作为属性的默认值,以便可以将其与其他字符串连接以形成值,spring,application.properties,Spring,Application.properties,在我的application.properties文件中,我有以下由3个属性连接而成的属性: eureka.instance.appname=${spring.application.name}${spring.profiles.active}${variant:} 我的意图是,当variant属性未初始化时,应通过连接variant属性的默认空字符串来形成eureka.instance.appname,以便值仅为${spring.application.name}${spring.profi
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,variant没有分配值
eureka.instance.appname=${spring.application.name}${spring.profiles.active}${variant:}
这对我适用
其他方法:您可以让属性资源占位符配置器检查变量的值。如果为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链搞砸了。