在SpringBoot中通过自定义参数可以实现很多重要的功能来达到解耦。SpringBoot 自定义参数的类型有 简单键值对
,自定义对象
,数组
,List
,Map
,List<Map>
。接下来我们慢慢将其道来。
首先我们编写yml文件,在其中定义:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
# 自定义参数
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
来获取
1
2
|
@Value("${cus.val}")
private String cusVal;
|
注意:在${}
中不能有空格。
方式二:这里先暂时卖个关子,因为方式二是通用的获取方式,最后统一说明。
2. 获取yml自定义参数中的数组
方式一:使用注解 @Value
来获取
1
2
|
@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
修饰
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
|
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 对象
1
2
|
@Autowired
private CustomParam customParam;
|
以上就是获取各类自定义参数的方式。