使用空字符串作为 属性 的默认值,以便它可以与其他字符串连接形成一个值
Use empty string as default value for a property so that it can be concatenated with other strings to form a value
在我的 application.properties 文件中,我有以下 属性 由 3 个属性组成:
eureka.instance.appname=${spring.application.name}${spring.profiles.active}${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,变体没有赋值
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);
}
};
}
在我的 application.properties 文件中,我有以下 属性 由 3 个属性组成:
eureka.instance.appname=${spring.application.name}${spring.profiles.active}${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,变体没有赋值
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);
}
};
}