wake-up-neo.com

Injizieren einer Classpath-Ressource in eine Spring 3-Bean

In meiner Spring 3-Bean gibt es eine Eigenschaft vom Typ Resource , die mit einem Verweis auf eine Datei im Klassenpfad eingefügt werden sollte. Ich verwende die @Value-Annotation wie folgt, um dies hoffentlich zu erreichen.

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

Die Eigenschaft ist jedoch immer null. Ich habe bestätigt, dass die SQL-Datei im Maven-Zielverzeichnis bereitgestellt wurde (dies ist in target/classes/abc/student/test.sql). 

Die engsten Lösungen, die ich googeln konnte, waren das und das die den XML-Weg detailliert, während ich daran interessiert bin, dies mit Annotationen zu tun. 

Schätzen Sie alle Hinweise darauf, was hier falsch sein könnte.

Vielen Dank,

Vijay

29

Wenn es so hart codiert wird, dann einfach

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

Ansonsten ist es das, was Sie wirklich wollen 

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

ich glaube, dass beim Einfügen des Eigenschaftswerts der korrekte PropertyEditor angewendet wird.

41
Ryan Stewart

Wenn Sie keine Eigenschaft angeben möchten, sollte dies funktionieren

@Value("${:classpath:json/inventory.json}")
Resource inventory;
0
deFreitas