spring @Value 默认值能使用其他静态变量或者常量作为默认值吗?
spring 中 @Value 默认值可以使用下面的形式:
@Value("${config.data:configvaluesdata}")private String configData;
private static String CONFIG_DATA = "some config data";
上面的代码, 怎么使用 CONFIG_DATA 作为 configData 配置的默认值?
回复
1个回答
test
2024-06-30
当没有相应的配置项时,可以有多种提供默认值的方式:
package com.example.demo;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
@Component
public class MyConfig {
@Value("${config.data:}")
private String nodefault;
@Value("${config.data:el default}")
private String eldefault;
@Value("${config.data:#{null}}")
private String fielddefault="field default";
@Value("${config.data:#{T(com.example.demo.MyConfig).CONFIG_DATA}}")
private String staticdefault;
@Value("${config.data:from el default}")
private String all = CONFIG_DATA;
public static String CONFIG_DATA = "from static data";
public String getNodefault() {
return nodefault;
}
public void setNodefault(String nodefault) {
this.nodefault = nodefault;
}
public String getEldefault() {
return eldefault;
}
public void setEldefault(String eldefault) {
this.eldefault = eldefault;
}
public String getFielddefault() {
return fielddefault;
}
public void setFielddefault(String fielddefault) {
this.fielddefault = fielddefault;
}
public String getStaticdefault() {
return staticdefault;
}
public void setStaticdefault(String staticdefault) {
this.staticdefault = staticdefault;
}
public String getAll() {
return all;
}
public void setAll(String all) {
this.all = all;
}
@java.lang.Override
public java.lang.String toString() {
return "MyConfig{" +
"nodefault='" + nodefault + '\'' +
", eldefault='" + eldefault + '\'' +
", fielddefault='" + fielddefault + '\'' +
", staticdefault='" + staticdefault + '\'' +
", all='" + all + '\'' +
'}';
}
}
myConfig.toString() 会在没有配置时输出:
MyConfig{nodefault='', eldefault='el default', fielddefault='field default', staticdefault='from static data', all='from el default'}
你可以从以上选一个你想要的
回复
适合作为回答的
- 经过验证的有效解决办法
- 自己的经验指引,对解决问题有帮助
- 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
- 询问内容细节或回复楼层
- 与题目无关的内容
- “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容