使用Resource

使用Resource

廖雪峰

资深软件开发工程师,业余马拉松选手。

在Java程序中,我们经常会读取配置文件、资源文件等。使用Spring容器时,我们也可以把“文件”注入进来,方便程序读取。

例如,AppService需要读取logo.txt这个文件,通常情况下,我们需要写很多繁琐的代码,主要是为了定位文件,打开InputStream。

Spring提供了一个org.springframework.core.io.Resource(注意不是jarkata.annotation.Resource或javax.annotation.Resource),它可以像String、int一样使用@Value注入:

@Component

public class AppService {

@Value("classpath:/logo.txt")

private Resource resource;

private String logo;

@PostConstruct

public void init() throws IOException {

try (var reader = new BufferedReader(

new InputStreamReader(resource.getInputStream(), StandardCharsets.UTF_8))) {

this.logo = reader.lines().collect(Collectors.joining("\n"));

}

}

}

注入Resource最常用的方式是通过classpath,即类似classpath:/logo.txt表示在classpath中搜索logo.txt文件,然后,我们直接调用Resource.getInputStream()就可以获取到输入流,避免了自己搜索文件的代码。

也可以直接指定文件的路径,例如:

@Value("file:/path/to/logo.txt")

private Resource resource;

但使用classpath是最简单的方式。上述工程结构如下:

spring-ioc-resource

├── pom.xml

└── src

└── main

├── java

│ └── com

│ └── itranswarp

│ └── learnjava

│ ├── AppConfig.java

│ └── AppService.java

└── resources

└── logo.txt

使用Maven的标准目录结构,所有资源文件放入src/main/resources即可。

练习

使用Spring的Resource注入app.properties文件,然后读取该配置文件。

下载练习

小结

Spring提供了Resource类便于注入资源文件。

最常用的注入是通过classpath以classpath:/path/to/file的形式注入。

相关推荐

迅雷怎么找下载链接
365bet-亚洲版官网

迅雷怎么找下载链接

微信如何扫码收款
英国365bet网址

微信如何扫码收款

老人手机怎么调时间和日期 老人机如何设置整点报时
365bet官网平台

老人手机怎么调时间和日期 老人机如何设置整点报时

追溯历史足球盛事 首届世界杯冠军的辉煌传奇与影响
英国365bet网址

追溯历史足球盛事 首届世界杯冠军的辉煌传奇与影响

华为全屏手机有哪些
英国365bet网址

华为全屏手机有哪些

摩托车双闪开关怎么接
365bet官网平台

摩托车双闪开关怎么接