spring - 使用空字符串作为属性的默认值,以便它可以与其他字符串连接形成一个值
问题描述
在我的 application.properties 文件中,我有以下由 3 个属性组成的属性:
eureka.instance.appname=${spring.application.name}${spring.profiles.active}${variant:}
我的意图是,当未初始化变体属性时,应通过连接变体属性的默认空字符串来形成 eureka.instance.appname,以便其值为 ${spring.application.name}${spring.profiles。主动}单独。
但如果我以上述指定格式定义最终字符串,则无法正确形成最终字符串。我找不到将空字符串分配为变量的默认值的方法。当我使用 ${variant:''} 时,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 并且没有为变量分配值
解决方案
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);
}
};
}
推荐阅读
- python - 在python中使用solve()函数引发异常错误
- image-processing - 如何使用 numpy 创建 am * n * 3 数组
- dictionary - clojure 中的地图给出了意想不到的结果
- ocaml - 什么“这不是一个函数;它不能被应用”错误是什么意思?
- r - 递归地将具有多个参数的函数应用于R中的列表
- javascript - 如何使用模块导出直接返回对象?
- elasticsearch - 如何在elasticsearch中实现搜索
- python - Python中的猪翻译器
- java - 如何使用硒添加新标头?
- javascript - 对象计数出现和返回对象的数组