Подтвердить что ты не робот

Используйте Spring для ввода текстового файла непосредственно в 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 с содержимым файла. Если нет, мне просто нужно будет жить с этим, но это будет хороший ярлык.

4b9b3361

Ответ 1

Технически вы можете сделать это с помощью XML и неудобной комбинации factory beans и методов. Но зачем беспокоиться, когда вы можете использовать конфигурацию 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);
        }
    }
}

Обратите внимание, что я также закрываю поток, возвращенный из sampleHtml.getInputStream(), используя идиому try-with-resources. В противном случае вы получите утечку памяти.

Ответ 2

В этом нет никаких встроенных функций, но вы можете сделать это самостоятельно, например. например:

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

Где readContent() возвращает строку, которая считывается из файла в пути/в/my_file.