Dra*_*MTN 5 spring spring-boot
我有一个属性文件,其中包含带有键的地图,每个键都有多个值,如下所示
//properties.yml
myMap:
key1: value1, value2
key2: value1, value2, value3
Run Code Online (Sandbox Code Playgroud)
myMap
使用Spring属性类很容易阅读,如下所示:
@Configuration
@ConfigurationProperties
public class MyConfiguration {
private Map<String, List<String>> myMap;
public Map<String, List<String>> getMyMap() {
return myMap;
}
public void setMyMap(Map<String, List<String>> myMap) {
this.myMap = myMap;
}
}
Run Code Online (Sandbox Code Playgroud)
但是,对于一个简单的任务,这感觉像很多代码。我想知道是否有一种方法可以使用Spring的@Value
注解来实现相同的目的?我试图使它无法成功工作,尝试类似
@Value("${myMap}")
private Map<String, List<String>> myMap;
Run Code Online (Sandbox Code Playgroud)
我认为可能需要SPEL,但我不确定如何
要使用 @Value 注入映射,您可以执行以下操作(但也许您需要修改 YAML):
@Value("#{${myMap}}")
private Map<String, List<String>> myMap;
Run Code Online (Sandbox Code Playgroud)
但是,鼓励使用@ConfigurationProperties而不是@Value(特别是如果您使用YAML格式,Spring boot使用SnakeYAML来解析YAML文件)
加载到地图时不需要设置器:
@ConfigurationProperties
public class MapProperties {
private Map<String, List<String>> myMap = new HashMap<>();
public Map<String, List<String>> getMyMap() {
return this.myMap;
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2516 次 |
最近记录: |