java - txt - Use Spring para inyectar un archivo de texto directamente a String
mostrar el contenido de un archivo txt en java (2)
Asi que tengo esto
@Value("classpath:choice-test.html")
private Resource sampleHtml;
private String sampleHtmlData;
@Before
public void readFile() throws IOException {
sampleHtmlData = IOUtils.toString(sampleHtml.getInputStream());
}
Lo que me gustaría saber es si es posible no tener el método readFile () e inyectar sampleHtmlData con el contenido del archivo. Si no, tendré que vivir con esto, pero sería un buen atajo.
No hay una funcionalidad incorporada para esto, que yo sepa, pero puede hacerlo usted mismo, por ejemplo:
<bean id="fileContentHolder">
<property name="content">
<bean class="CustomFileReader" factory-method="readContent">
<property name="filePath" value="path/to/my_file"/>
</bean>
</property>
</bean>
Donde readContent () devuelve una cadena que se lee del archivo en la ruta / a / mi_archivo.
Técnicamente, puede hacer esto con XML y una combinación incómoda de beans de fábrica y métodos. ¿Pero por qué molestarse cuando puedes usar la configuración de 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);
}
}
}
Tenga en cuenta que también cierro la secuencia devuelta desde sampleHtml.getInputStream()
utilizando el lenguaje de prueba con recursos . De lo contrario obtendrá una pérdida de memoria.