在SpringBoot中通過自定義參數可以實現很多重要的功能來達到解耦。SpringBoot 自定義參數的類型有 簡單鍵值對
,自定義對象
,數組
,List
,Map
,List<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
註解來獲取,需要使用如下方式獲取。使用如下方式可獲取:
- 獲取yml自定義參數中的鍵值對,對應上面配置文件的 val
- 獲取yml自定義參數中的數組,對應上面配置文件的 arr1,arr2
- 獲取yml自定義參數中的對象,對應上面配置文件的 bean 對象
- 獲取yml自定義參數中的List,對應上面配置文件的 list
- 獲取yml自定義參數中Map<Object,Object>,對應上面配置文件的 map
- 獲取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;
以上就是獲取各類自定義參數的方式。