接下來用一個簡單地示例來說解:c#
server: port: 8096# listlist1: a,b,c# setset1: a,b,c,a,b# map# 對於map總體要用引號進行包裹,對於value值必需要包裹,key值能夠不包裹map1: '{"name":"gavin","age":"18"}'# map1: '{name:"gavin",age:"19"}'複製代碼
@Configuration@Datapublic class ListConfig {@Value("#{'${list1}'.split(',')}")private List<String> list1;/** *冒號後表示默認值,此處表示yml文件沒有配置list2時,默認list2爲空,此處返回list2=[] */@Value("#{'${list2:}'.split(',')}")private List<String> list2;/** *冒號後表示默認值,此處表示yml文件沒有配置list2時,默認list2爲空, * 若list2位空,則返回list3=null,不然正常返回 */@Value("#{'${list2:}'.empty ? null:'${list2:}'.split(',')}")private List<String> list3;/** *冒號後表示默認值,此處表示yml文件沒有配置list4時,默認list4爲g,此處返回list4=[g] */@Value("#{'${list2:g}'.split(',')}")private List<String> list4;/** *冒號後表示默認值,此處表示yml文件沒有配置address時,默認address爲asd,此處返回address=asd */@Value("${address:asd}")private String address;/** *set與list原理一致,只是對結果進行了去重操做,此處返回set1=[a, b, c] */@Value("#{'${set1}'.split(',')}")private Set<String> set1;@Value("#{${map1}}")private Map<String,String> map1; }複製代碼
RestController@RequestMapping("/hello")public class controller {@Autowiredprivate ListConfig listConfig;@GetMapping("/test1")public void test() { List<String> test=listConfig.getList1(); System.out.println("list1: "+test); //list1: [a, b, c]}@GetMapping("/test2")public void test2() { List<String> test=listConfig.getList2(); System.out.println("list2: "+test); //list2: [] }@GetMapping("/test3")public void test3() { List<String> test=listConfig.getList3(); System.out.println("list3: "+test); // list3: null}@GetMapping("/test4")public void test4() { List<String> test=listConfig.getList4(); System.out.println("list4: "+test); // list4: [g]}@GetMapping("/test5")public void test5() { String test=listConfig.getAddress(); System.out.println("address: "+test); // address: asd}@GetMapping("/test6")public void test6() { Set<String> test=listConfig.getSet1(); System.out.println("set1: "+test); // set1: [a, b, c]} // key = name, value = gavin// key = age, value = 18@GetMapping("/test7")public void test7() { Map<String,String> map=listConfig.getMap1();for (Map.Entry<String, String> entry : map.entrySet()) { System.out.println("key = " + entry.getKey() + ", value = " + entry.getValue()); } } }複製代碼
"":雙引號;不會轉義字符串裏面的特殊字符;特殊字符會做爲自己想表示的意思app
information1: "gavin \n 年齡18"輸出 information1: gavin 年齡18複製代碼
'':單引號;會轉義特殊字符,特殊字符終只是一個普通的字符串數據ide
information2: 'gavin \n 年齡18'輸出 information2: gavin \n 年齡18複製代碼