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