2011-08-11 25 views
27

Hay una propiedad del tipo Resource en mi bean Spring 3 que se debe inyectar con una referencia a un archivo en el classpath. Uso la anotación @Value de la siguiente manera para poder lograr esto.Inyectando un recurso classpath en un bean Spring 3

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

Pero la propiedad es siempre nula. Confirmé que el archivo sql se implementó en el directorio de destino maven (está en target/classes/abc/student/test.sql).

Las soluciones más cercanas que pude encontrar en google fueron this y this que detallan el modo xml mientras que estoy interesado en hacer esto usando anotaciones.

Aprecie cualquier puntero sobre lo que podría estar mal aquí.

Gracias,

Vijay

Respuesta

39

Si va a ser duro con código de esa manera, a continuación, sólo

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

De lo contrario, lo que realmente después es

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

y creo que al inyectar el valor de la propiedad, se aplicará el PropertyEditor correcto.

+1

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

+0

Gracias por sus respuestas. Ambas soluciones funcionaron. Preferí el enfoque @Value ya que no permite la dependencia de las clases de Spring desde mi código. –

+0

¿Sabía que @Value es una clase de primavera? – Wes

Cuestiones relacionadas