關於Environment讀取變量,Yaml類讀取yml文件,yml中list的寫法

測試yml文件的讀取,以及Environment的api

  • Environment 是spring 自帶的類,可用於讀取變量的值、profile
  • Yaml(org.yaml.snakeyaml.Yaml) 也是spring框架自帶的類,用來讀取yml文件
  • yml文件有些平時比較少用的寫法
# 這是最普通的寫法
abc:
 def: my_value

# 可以壓縮,寫成
abc.def: my_value

# 對於特別長的,這種扁平的壓縮的寫法是非常清晰明瞭的,如果採用yml的層級寫法,反而會非常亂
other.dataengine.tag.mgmt.mark:
  delete.input.file.path: delete_input_file_path_可以這樣類似prop一樣扁平地寫
  delete.out.file.path: delete_out_file_path_22222

# 對於list的配置,最簡單的,可以用英文逗號隔開
my:
  list: elem1,elem2
# 或壓縮的寫法
my.list: elem1,elem2

# list還有另外一種寫法
test:
  list:
    - item1
    - item2

# 或者壓縮的寫法
test.list:
    - item1
    - item2

對比list的兩種寫法的優劣勢
* 逗號的寫法優勢明顯,可以被 `List list = environment.get("my.list", List.class)` 獲取,也可以被 `@Value("${my.list}")` 獲取
* 用 `-` 的寫法,不能用 `environment.get("my.list", List.class)` 和 `@Value("${my.list}")` 的寫法,只能用一個Bean來承接這個List(參考MyBean)

需要注意的是逗號的寫法,可以獲取爲字串,也可以獲取爲List對象,關鍵就是用什麼類型去承接,比如用List.class,或者@Value註釋的是List類型則會把值轉爲list

附錄

  • MyBean
@Configuration
@ConfigurationProperties("test")
@Data
public class MyBean {
    private List<String> list;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章