2011-08-11 13 views
27

Istnieje właściwość typu Resource w moim komponencie Spring 3 bean, który powinien zostać wstrzyknięty z odniesieniem do pliku w ścieżce classpath. Używam adnotacji @Value, jak poniżej, aby mieć nadzieję, że uda się to osiągnąć.Wstrzyknięcie zasobu ścieżki klasy do komponentu Spring 3 bean

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

Ale właściwość ma zawsze wartość zerową. Potwierdziłem, że plik sql został wdrożony w katalogu docelowym maven (to jest w target/classes/abc/student/test.sql).

Najbliższe rozwiązania, które mogłem znaleźć w Google to: this i this, które szczegółowo opisują sposób xml, natomiast jestem zainteresowany robieniem tego za pomocą adnotacji.

Doceń wszelkie wskazówki na temat tego, co może być nie tak.

Dzięki

Vijay

Odpowiedz

39

Jeśli to ma być zakodowane tak, wtedy właśnie

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

W przeciwnym razie, co naprawdę jesteś Po

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

i wierzę, że przy wstrzykiwaniu wartości nieruchomości zostanie zastosowany poprawny PropertyEditor.

+1

Uzgodnione - patrz http://stackoverflow.com/questions/6392406/populate-spring-beans-file-field-via-annotation/6392724#6392724 – sourcedelica

+0

Dziękuję za odpowiedzi. Oba rozwiązania działały. Preferowałem podejście @Value, ponieważ nie pozwala ono na uzależnienie od klas wiosennych od mojego kodu. –

+0

Wiesz, że @Value jest klasą wiosenną? – Wes

Powiązane problemy