SpringBoot快速入门-SpringBoot配置绑定 @Value的用法详解

SpringBoot在application.yml中配置了全局信息,这些配置信息的引用有三种方法:
1、@Value
2、@ConfigurationProperties
3、@PropertySource

@Value可以给某个变量绑定一个值。我们详细来看一下@Value的使用方法,@Value的使用方式有@Value(“${xxx}”)和@Value(“#{${xxx}}”),第一种是引用普通常量,第二种是SpEL表达式,通常List、Map都需要使用#{${xxx}}来获取对应的值。

代码演示:
先在application.yml文件中配置如下:

var1: test1
arrs1: a1,a2,a3
map1: "{key1: 1, key2: 2}"	

代码:

/**
 * 通过普通字面量获取配置
 */
@Component
public class SpringBootConfiguration_1 {

    @Value("${var1}")
    private String var1;

    @Value("${arrs1}")
    private String[] arrs1;

    @Value("#{${map1}}")
    private Map<String,String> map1;

    public void printInfo() {
        System.out.println("var1:"+var1);
        Arrays.stream(arrs1).forEach(System.out::println);
        map1.keySet().stream().forEach(x->System.out.println("key:"+x+",value:"+map1.get(x)));
    }
}

/*
输出:
var1:test1
a1
a2
a3
key:key1,value:1
key:key2,value:2
 */

从代码中可以看到普通的String变量var1和对象类型Map变量map1的配置信息绑定方式不同,分别是@Value(“${var1}”)和@Value(“#{${map1}}”),这是我们平时使用@Value需要注意的。