Spring Properties(YAML)配置映射 Map 和 List
原创2019/6/20小于 1 分钟
Spring Properties(YAML)配置映射 Map 和 List
1、方式一:独立 Config
citycode.properties:
#List properties
citycode.list[0]=www
citycode.list[1]=localhost
citycode.list[2]=wuhan
citycode.list[3]=tianjin
#Map Properties
citycode.map.www=4201
citycode.map.wuhan=4201
citycode.map.tianjin=1200CityCodeConfig:
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Data
@Configuration
@PropertySource("classpath:citycode.properties")
@ConfigurationProperties(prefix = "citycode")
public class CityCodeConfig {
private List<String> list = new ArrayList<>();
private Map<String, String> map = new HashMap<>();
}直接使用即可:
@Autowired
private CityCodeConfig cityCodeConfig;2、方式二:使用 @Value 注解的场景
属性配置文件:
#List
demo.list=value1,value2,value3
#Map
demo.map={key1:"value1",key2:"value2"}注意:
- map 的写法和 json 差不多,key 加不加引号都可以,value 加单引号或双引号都行,但是当 key 中有“-”时就必须得加引号,否则会解析失败!
- list 的写法和数组差不多,分隔符可以自定义,在
Java中分隔 - 在 Yaml 中一定要使用引号把 map 对应的值括起来,否则会解析失败
Java 配置类:
@Getter
@Setter
@Component
@ConfigurationProperties
@PropertySource("properties文件路径")
public class DemoConfig {
@Value("#{${demo.map}}")
private Map<String, String> map;
@Value("#{'${demo.list}'.split(',')}")
private List<String> list;
// 或
// private String[] list;
}
