概述
在业务开发中经常有可能读取一些自定义配置或者文件。比如说公私钥文件、一些固定的词典文件之类的,这一类统称为资源(Resource)。Spring自带有资源加载功能,甚至还有非常便利的方法将读取的内容注入Spring bean。
整理网络上相关方法与自身实践的实践
通过Resource接口读取文件
我们可以使用org.springframework.core.io.Resource接口简化资源文件的定位。Spring帮助我们使用资源加载器查找和读取资源,资源加载器根据提供的路径决定选择哪个Resource实现。
使用Resource的实现类
org.springframework.core.io.Resource接口常用的有两个实现类:
org.springframework.core.io.ClassPathResource
用来加载
classpath
下的资源,直接读取springboot
配置文件application.properties
,其中已经写入了一个配置server.port=8080
public void classPathResourceTest() throws IOException {
Resource resource = new ClassPathResource("application.properties");
InputStream inputStream = resource.getInputStream();
Properties properties = new Properties();
properties.load(inputStream);
properties.forEach((o, o2) -> {
Assertions.assertThat(o).isEqualTo("server.address");
Assertions.assertThat(o2).isEqualTo("8080");
});
}org.springframework.core.io.FileSystemResource
用来加载系统文件,通常通过文件的绝对值或者相对路径来读取。需要文件的路径。
public void fileResourceTest() throws IOException {
String path = "/workspaces/springboot-demo/src/main/resources/application.properties";
FileSystemResource resource = new FileSystemResource(path);
InputStream inputStream = resource.getInputStream();
Properties properties = new Properties();
properties.load(inputStream);
properties.forEach((o,o2) -> {
Assertions.assertThat(o).isEqualTo("server.adderss");
Assertions.assertThat(o2).isEqualTo("8080");
});
}
使用ResourceLoader
使用ResourceLoader
可以实现延迟加载:
|
可以使用@Autowired
将ResourceLoader
注入为bean
.
使用@Value注解
|