21

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

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

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

私が知りたいのは、readFile() メソッドを持たず、sampleHtmlData にファイルの内容を注入することが可能かどうかです。そうでない場合は、これと一緒に暮らす必要がありますが、それは素晴らしいショートカットになります.

4

3 に答える 3

40

技術的には、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()を使用してから返されたストリームも閉じることに注意してください。そうしないと、メモリリークが発生します。

于 2012-12-06T08:54:23.667 に答える
1

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

<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上のファイルから読み取られる文字列を返します。

于 2012-12-06T08:54:34.840 に答える