共计 1147 个字符,预计需要花费 3 分钟才能阅读完成。
在 Java 程序中,我们经常会读取配置文件、资源文件等。使用 Spring 容器时,我们也可以把“文件”注入进来,方便程序读取。
例如,AppService 需要读取 logo.txt
这个文件,通常情况下,我们需要写很多繁琐的代码,主要是为了定位文件,打开 InputStream。
Spring 提供了一个 org.springframework.core.io.Resource
(注意不是jarkata.annotation.Resource
或javax.annotation.Resource
),它可以像 String
、int
一样使用 @Value
注入:
public class AppService { | |
private Resource resource; | |
private String logo; | |
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()
就可以获取到输入流,避免了自己搜索文件的代码。
也可以直接指定文件的路径,例如:
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
的形式注入。
正文完
星哥玩云-微信公众号
