42 votes

Spring 3.0 injecte des fichiers en tant que ressources

Dans mon application Spring 3.0, j'ai des ressources en /WEB-INF/dir . Au moment de l'exécution, j'ai besoin de certains d'entre eux sous forme de InputStream (ou d'un autre type). Comment puis-je les récupérer ? Est-il possible de les injecter comme un Resource normal ?

79voto

Nikita Koksharov Points 1552

Voici un moyen plus simple de le faire via l'annotation :

 import org.springframework.core.io.Resource;

@Value("classpath:<path to file>")
private Resource cert;

2voto

Saket Points 9771

Vous devriez pouvoir utiliser :

 Resource resource = appContext.getResource("classpath:<your resource name>");
InputStream is = resource.getInputStream();

appContext est votre Spring ApplicationContext (en particulier, un WebApplicationContext, puisque vous avez une webapp)

1voto

atrain Points 5653

Voici un exemple complet pour récupérer une ressource de chemin de classe. Je l'utilise pour récupérer des fichiers SQL contenant des requêtes très complexes que je ne souhaite pas stocker dans des classes Java :

 public String getSqlFileContents(String fileName) {
    StringBuffer sb = new StringBuffer();
    try {
        Resource resource = new ClassPathResource(fileName);
        DataInputStream in = new DataInputStream(resource.getInputStream());
        BufferedReader br = new BufferedReader(new InputStreamReader(in));
        String strLine;
        while ((strLine = br.readLine()) != null) {
            sb.append(" " + strLine);
        }
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }
    return sb.toString();
}

0voto

user636334 Points 740

Si vous ne souhaitez pas introduire de dépendance à Spring, suivez l'approche détaillée ici : Remplir le champ Fichier de Spring Bean via Annotation

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X