SpringBoot学习——yml 文件中自定义参数解析对象

版权声明:转载请注明来源 https://blog.csdn.net/qq_24598601/article/details/89070019

  在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 注解,自动注入来使用。

@Autowired
private CustomParam customParam;

以上就是获取各类自定义参数的方式。

猜你喜欢

转载自blog.csdn.net/qq_24598601/article/details/89070019