Saltar al contenido

Cómo acceder a un archivo de recursos en la carpeta src / main / resources / en Spring Boot

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)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *