java - 使用 Spring 将文本文件直接注入(inject) String

所以我有这个

@Value("classpath:choice-test.html")
private Resource sampleHtml;
private String sampleHtmlData;

@Before
public void readFile() throws IOException {
    sampleHtmlData = IOUtils.toString(sampleHtml.getInputStream());
}

我想知道的是,是否可以不使用 readFile() 方法并让 sampleHtmlData 注入(inject)文件的内容。如果不是,我只能忍受这个,但这将是一个不错的捷径。

最佳答案

从技术上讲,您可以使用 XML 以及工厂 bean 和方法的笨拙组合来做到这一点。但是,当您可以使用 Java 配置时,何必费心呢?

@Configuration
public class Spring {

    @Value("classpath:choice-test.html")
    private Resource sampleHtml;

    @Bean
    public String sampleHtmlData() {
        try(InputStream is = sampleHtml.getInputStream()) {
            return IOUtils.toString(is, StandardCharsets.UTF_8);
        }
    }
}

请注意,我还使用 try-with-resources 习语关闭了从 sampleHtml.getInputStream() 返回的流。否则你会得到内存泄漏。

https://stackoverflow.com/questions/13739823/

相关文章:

java - Spring 的 JdbcTemplate 和事务

spring - 是否可以在表单 :select/form:option 的 itemLabel 中

java - RestTemplate 不转义 url

mysql - spring jpa application.properties useSSL

json - Spring REST 服务 : retrieving JSON from Reque

java - Spring Redis - 从 application.properties 文件中

java - 通过 Spring 将字段注入(inject) Hibernate 加载的实体中

performance - ORM 解决方案(JPA;Hibernate)与 JDBC

spring - 不使用 Maven 下载 Spring Jars

java - 是否可以在构造函数上使用@Resource?