Solución:
los @Value
La anotación se usa para inyectar valores de propiedad en variables, generalmente cadenas o valores primitivos simples. Puedes encontrar más información aquí.
Si desea cargar un archivo de recursos, use un ResourceLoader
igual que:
@Autowired
private ResourceLoader resourceLoader;
...
final Resource fileResource = resourceLoader.getResource("classpath:XYZ/view/abc.xsd");
Entonces puede acceder al recurso con:
fileResource.getInputStream()
o fileResource.getFile()
Ambos @Value
y ResourceLoader
funciona bien para mí. Tengo un archivo de texto simple en src/main/resources/
y pude leerlo con ambos enfoques.
Quizas el static
la palabra clave es la culpable?
package com.zetcode;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.CommandLineRunner;
import org.springframework.core.io.Resource;
import org.springframework.core.io.ResourceLoader;
import org.springframework.stereotype.Component;
@Component
public class MyRunner implements CommandLineRunner {
@Value("classpath:thermopylae.txt")
private Resource res;
//@Autowired
//private ResourceLoader resourceLoader;
@Override
public void run(String... args) throws Exception {
// Resource fileResource = resourceLoader.getResource("classpath:thermopylae.txt");
List<String> lines = Files.readAllLines(Paths.get(res.getURI()),
StandardCharsets.UTF_8);
for (String line : lines) {
System.out.println(line);
}
}
}
Un ejemplo de código de trabajo completo está disponible en mi tutorial Cargando recursos en Spring Boot.
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)