web-dev-qa-db-ja.com

Springを使用して、テキストファイルを文字列に直接挿入します

だから私はこれを持っています

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

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

私が知りたいのは、readFile()メソッドを持たず、sampleHtmlDataにファイルの内容を挿入することが可能かどうかです。そうでなければ、私はこれと一緒に暮らす必要がありますが、それは素晴らしい近道でしょう。

19
rozner

技術的には、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);
        }
    }
}
_

try-with-resourcesイディオムを使用して、sampleHtml.getInputStream()から返されたストリームも閉じることに注意してください。そうしないと、メモリリークが発生します。

38

私の知る限り、これには組み込みの機能はありませんが、自分で行うことができます。このような:

<bean id="fileContentHolder">
  <property name="content">
    <bean class="CustomFileReader" factory-method="readContent">
      <property name="filePath" value="path/to/my_file"/>
    </bean>
   </property>
</bean>

ReadContent()は、path/to/my_file上のファイルから読み取られる文字列を返します。

1
abalogh