spring boot @Value 获取计算机中绝对路径文件的内容
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了spring boot @Value 获取计算机中绝对路径文件的内容相关的知识,希望对你有一定的参考价值。
参考技术A 默认情况下使用这样获取到的是项目classpath 下的 aaa.txt
如果想获取非项目路径下的文件内容怎么办呢,看了下@Value的好像也没有说,
其实
这样是可以获取到 百度首页的内容的.它这里使用的是https协议.
那么同样的我们可以使用file协议获取文本的内容
即:
使用@Value 有一个好处就是,你不用关心文本内容的变化,你每次调用的时候,springboot 会自动帮你重新加载.
是否可以使用 Spring Boot 注释 @Value 从 application.properties 文件中获取 Map 值 [重复]
【中文标题】是否可以使用 Spring Boot 注释 @Value 从 application.properties 文件中获取 Map 值 [重复]【英文标题】:Is it possible to get Map value from application.properties file using springboot annotation @Value [duplicate] 【发布时间】:2019-03-28 11:12:01 【问题描述】:我需要从application.properties
文件中获取静态键值对数据,是否可以通过SpringBoot注解@Value
来实现。
建议将不胜感激。
示例:
languageMap='1'='English','2'='French'
@Value($("languageMap"))
Map<String,String> languageMap;
【问题讨论】:
我想如果你选择application.yml
格式而不是application.properties
,这会更直观。这种格式有“字典”和地图。
【参考方案1】:
application.properties:
languageMap[1]= English
languageMap[2]= French
代码,只需使用@ConfigurationProperties
和setter 方法(setLanguageMap) 是Map 字段的必填项,否则您将无法获取值。
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】:使用@ConfigurableProperties
并重组您的属性文件:
@Configuration
@PropertySource("<prop-file-path>")
@ConfigurationProperties()
public class ConfigProperties
@Value($("languageMap"))
Map<String,String> languageMap;
属性文件:
languageMap.1=English
languageMap.2=French
【讨论】:
【参考方案3】:您可以使用文档中提到的 @ConfigurationProperties 注释来注入 Map。
https://docs.spring.io/spring-boot/docs/1.2.3.RELEASE/reference/htmlsingle/#boot-features-external-config-loading-yaml]
根据该文档,您可以加载属性:
language.map[0]='英语'
language.map[1]='法语'
@ConfigurationProperties(prefix="language")
public class LanguageMap
private List<String> languages= new ArrayList<String>();
public List<String> getLanguages()
return this.languages;
【讨论】:
【参考方案4】:是的,可以使用@ConfigurableProperties
。您必须创建一个类来访问这些属性。看看this。在该示例中,查看如何访问 additionalHeaders
。那会帮助你。
【讨论】:
以上是关于spring boot @Value 获取计算机中绝对路径文件的内容的主要内容,如果未能解决你的问题,请参考以下文章
Spring boot @ConfigurationProperties 和@Value
spring boot 配置属性值获取注解@Value和@ConfigurationProperties比较
spring boot项目中使用@Value获取yml配置文件中的属性值不对的问题。
Spring-boot中@ConfigurationProperties,@Value,@PropertySource