2011-08-11 8 views
27

Il y a une propriété de type Resource dans mon bean Spring 3 qui devrait être injectée avec une référence à un fichier dans le classpath. J'utilise l'annotation @Value comme ci-dessous pour espérer y parvenir.Injection d'une ressource classpath dans un bean Spring 3

public class TestBean 
{ 
    @Value("classpath:/abc/student/test.sql") 
    private Resource SqlFile; 
    ... 
} 

Mais la propriété est toujours nulle. J'ai confirmé que le fichier sql a été déployé dans le répertoire cible de maven (il est sur target/classes/abc/student/test.sql).

Les solutions les plus proches que j'ai pu google étaient this et this qui détaillent le chemin xml alors que cela m'intéresse en utilisant des annotations.

Appréciez les pointeurs sur ce qui pourrait être faux ici.

Merci,

Vijay

Répondre

39

Si ça va être codé en dur comme ça, alors que

private Resource sqlFile = new ClassPathResource("/abc/student/test.sql"); 

Sinon, ce que vous êtes vraiment après est-

@Value("${some.property}") 
private Resource sqlFile; 

et je crois que dans l'injection de la valeur de la propriété, le PropertyEditor correct sera appliqué.

+1

D'accord - voir http://stackoverflow.com/questions/6392406/populate-spring-beans-file-field-via-annotation/6392724#6392724 – sourcedelica

+0

Merci pour vos réponses. Les deux solutions ont fonctionné. J'ai préféré l'approche @Value car elle ne permet aucune dépendance sur les classes Spring de mon code. –

+0

Vous savez que @Value est une classe de printemps? – Wes

Questions connexes