yml 文件中自定義參數解析對象——SpringBoot學習

  在SpringBoot中通過自定義參數可以實現很多重要的功能來達到解耦。SpringBoot 自定義參數的類型有 簡單鍵值對自定義對象數組ListMapList<Map>。接下來我們慢慢將其道來。

首先我們編寫yml文件,在其中定義:

# 自定義參數
cus:
  val: 張三
  bean: 
    id: 20
    name: 張三
  arr1: 1, 3, 4
  arr2: [1, 3, 4]
  list:
    - lista
    - listb
  map:
    a: mapa
    b: mapb
  listmap:
    - a: a
      b: b
      c: c
    - d: d
      e: e
      f: f

1. 獲取yml自定義參數中的鍵值對

  方式一:使用註解 @Value 來獲取

@Value("${cus.val}")
private String cusVal;

  注意:在${}中不能有空格。
  方式二:這裏先暫時賣個關子,因爲方式二是通用的獲取方式,最後統一說明。

2. 獲取yml自定義參數中的數組

  方式一:使用註解 @Value 來獲取

@Value("${cus.arr1}")
private String cusVal;

  注意:在${}中不能有空格。對於沒與使用”[]“括起來的數組可以使用方式一來獲取,而使用了”[]“括起來的數組只能用方式二獲取
  方式二:這裏先暫時賣個關子,因爲方式二是通用的獲取方式,最後統一說明。

3. 配置文件中其他獲取

  配置文件中其他文件就不能使用簡單的 @Value 註解來獲取,需要使用如下方式獲取。使用如下方式可獲取:

  1. 獲取yml自定義參數中的鍵值對,對應上面配置文件的 val
  2. 獲取yml自定義參數中的數組,對應上面配置文件的 arr1,arr2
  3. 獲取yml自定義參數中的對象,對應上面配置文件的 bean 對象
  4. 獲取yml自定義參數中的List,對應上面配置文件的 list
  5. 獲取yml自定義參數中Map<Object,Object>,對應上面配置文件的 map
  6. 獲取yml自定義參數中List<Map<Object,Object>>,對應上面配置文件的 listmap

  第一步首先定義一個如下格式的類,
  具體格式
(1)其中的成員變量名稱需要與配置的自定義參數名稱一致
(2)每個成員變量必須要有 get/set 方法
(3)該類使用註解 @Component@ConfigurationProperties 修飾

package com.config;

import java.util.Arrays;
import java.util.List;
import java.util.Map;

import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

import com.bean.User;

/**
* @Description 獲取yml中自定義的參數
* @author 歐陽
* @since 2019年4月7日 下午1:48:27
* @version V1.0
*/
@Component
@ConfigurationProperties(prefix="cus")
public class CustomParam {
	
	private String val;
	private User bean;
	private String[] arr1;
	private String[] arr2;
	private List<String> list;
	private Map<String, String> map;
	private List<Map<String, String>> listmap;
	
	public String getVal() {
		return val;
	}
	public void setVal(String val) {
		this.val = val;
	}
	public User getBean() {
		return bean;
	}
	public void setBean(User bean) {
		this.bean = bean;
	}
	
	public String[] getArr1() {
		return arr1;
	}
	public void setArr1(String[] arr1) {
		this.arr1 = arr1;
	}
	public String[] getArr2() {
		return arr2;
	}
	public void setArr2(String[] arr2) {
		this.arr2 = arr2;
	}
	public List<String> getList() {
		return list;
	}
	public void setList(List<String> list) {
		this.list = list;
	}
	public Map<String, String> getMap() {
		return map;
	}
	public void setMap(Map<String, String> map) {
		this.map = map;
	}
	public List<Map<String, String>> getListmap() {
		return listmap;
	}
	public void setListmap(List<Map<String, String>> listmap) {
		this.listmap = listmap;
	}
	@Override
	public String toString() {
		return "CustomParam [val=" + val + ", bean=" + bean + ", arr1=" + Arrays.toString(arr1) + ", arr2="
				+ Arrays.toString(arr2) + ", list=" + list + ", map=" + map + ", listmap=" + listmap + "]";
	}
	
}

第二步在需要使用的地方使用 @Autowired 註解,自動注入來使用。Map 可改爲 Object 對象

@Autowired
private CustomParam customParam;

以上就是獲取各類自定義參數的方式。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章