spring @Value 默认值能使用其他静态变量或者常量作为默认值吗?

spring 中 @Value 默认值可以使用下面的形式:

@Value("${config.data:configvaluesdata}")
private String configData;

private static String CONFIG_DATA = "some config data";

上面的代码, 怎么使用 CONFIG_DATA 作为 configData 配置的默认值?

阅读 3.4k
1 个回答

当没有相应的配置项时,可以有多种提供默认值的方式:

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'}

你可以从以上选一个你想要的

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题