web-dev-qa-db-fra.com

Injection d'une ressource de classpath dans un bean Spring 3

Il existe une propriété de type Ressource dans mon bean Spring 3 à injecter avec une référence à un fichier dans le chemin d'accès aux classes. J'utilise l'annotation @Value comme ci-dessous pour y parvenir, espérons-le.

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 maven (il se trouve dans target/classes/abc/student/test.sql). 

Les solutions les plus proches que je pouvais utiliser sur Google étaient ceci et ceci qui détaillent la manière xml alors que je suis intéressé à le faire en utilisant des annotations. 

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

Merci,

Vijay

29
Babu Subburathinam

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

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

Sinon, ce que vous voulez vraiment, c'est 

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

et je crois qu'en injectant la valeur de la propriété, le PropertyEditor correct sera appliqué.

41
Ryan Stewart

Si vous ne souhaitez pas spécifier une propriété, cela devrait fonctionner

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