1、使用@Value取配置文件中的map配置
yml配置:
fyk.db-script.check-sql.[1-FYK_PROPERTIES-DQL]=select case when exists(select 1 from all_tables t where t.TABLE_NAME = upper('fyk_properties')) then 1 else 0 end as result from dual
fyk.db-script.check-sql.[2-FYK_PROPERTIES-DML-fyk-oauth]=select case when exists(select 1 from fyk_properties t where t.application='fyk-oauth') then 1 else 0 end as result from dual
第一种方式
@Data
@ConfigurationProperties(prefix = "fyk.db-script")
public class CheckSqlProperties {
private Map<String, String> checkSql;
}
第二种方式
@Value("${fyk.db-script.check-sql}")
private Map<String, String> checkSql;
2、使用@Value的方式获取
yml配置:
fyk.db-script.check-sql={\
"1-FYK_PROPERTIES-DQL":"select case when exists(select 1 from all_tables t where t.TABLE_NAME = upper('fyk_properties')) then 1 else 0 end as result from dual",\
"2-FYK_PROPERTIES-DML-fyk-oauth":"select case when exists(select 1 from fyk_properties t where t.application='fyk-oauth') then 1 else 0 end as result from dual"\
}
获取方法:
@Value("#{${fyk.db-script.check-sql}}")
private Map<String, String> checkSql;
3、SpringBoot中@Value注解详解
yml配置:
test:
list:
- aaa
- bbb
- ccc
yml配置:
test.list[0]=aaa
test.list[1]=bbb
test.list[2]=ccc
获取方法
@Configuration
@ConfigurationProperties("test")
public class TestListConfig {
private List<String> list;
public List<String> getList() {
return list;
}
public void setList(List<String> list) {
this.list = list;
}
}
4、数组怎么样
yml配置:
test:
array1: aaa,bbb,ccc
array2: 111,222,333
array3: 11.1,22.2,33.3
获取方法:
@Value("${test.array1}")
private String[] testArray1;
@Value("${test.array2}")
private int[] testArray2;
@Value("${test.array3}")
private double[] testArray3;
@Value("${test.array1:}")
private String[] testArray1;
@Value("${test.array2:}")
private int[] testArray2;
@Value("${test.array3:}")
private double[] testArray3;
4.1替代方法
yml配置:
test:
list: aaa,bbb,ccc
在调用时,借助 EL 表达式的 split() 函数进行切分即可。
@Value("#{'${test.list}'.split(',')}")
private List<String> testList;
同样,为它加上默认值,避免不配置这个 key 时候程序报错:
@Value("#{'${test.list:}'.split(',')}")
private List<String> testList;
5、解析 Set
yml配置:
test:
set: 111,222,333,111
@Value("#{'${test.set:}'.empty ? null : '${test.set:}'.split(',')}")
private Set<Integer> testSet;
// output: [111, 222, 333]
6、解析 Map
解析 Map 的写法如下所示,value 为该 map 的 JSON 格式,注意这里使用的引号:整个 JSON 串使用引号包裹,value 值使用引号包裹。
yml配置:
test:
map1: '{"name": "zhangsan", "sex": "male"}'
map2: '{"math": "90", "english": "85"}'
@Value("#{${test.map1}}")
private Map<String,String> map1;
@Value("#{${test.map2}}")
private Map<String,Integer> map2;