我需要从application.properties
文件中获取静态键值对数据。可以通过SpringBoot注释@Value
来做到这一点。
建议,不胜感激。
示例:
languageMap={'1'='English','2'='French'}
@Value($("languageMap"))
Map<String,String> languageMap;
答案 0 :(得分:2)
您可以使用文档中提到的 @ConfigurationProperties 注释注入Map。
根据文档,您可以加载属性:
language.map [0] ='英语'
language.map [1] ='法语'
put
答案 1 :(得分:2)
application.properties:
languageMap[1]= English
languageMap[2]= French
代码,只需使用@ConfigurationProperties
,并且Map字段必须使用setter方法(setLanguageMap),否则将无法获取值。
import java.util.Map;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController("/myclass")
@ConfigurationProperties
public class TestControllerEx {
Map<String, String> languageMap;
@GetMapping
public ResponseEntity control() {
System.out.println(getLanguageMap());
return new ResponseEntity("success", HttpStatus.OK);
}
public Map<String, String> getLanguageMap() {
return languageMap;
}
public void setLanguageMap(Map<String, String> languageMap) {
this.languageMap = languageMap;
}
}
输出:
{1=English, 2=French}
答案 2 :(得分:1)
是的,可以使用@ConfigurableProperties
。您必须创建一个类来访问这些属性。看一下this。在该示例中,查看如何访问additionalHeaders
。那对你有帮助。
答案 3 :(得分:1)
使用@ConfigurableProperties
并重组您的属性文件:
@Configuration
@PropertySource("<prop-file-path>")
@ConfigurationProperties()
public class ConfigProperties {
@Value($("languageMap"))
Map<String,String> languageMap;
}
属性文件:
languageMap.1=English
languageMap.2=French