2017-05-27 3 views
0

In einem Spring-Basisprojekt möchten wir eine Datei von classpath laden. Die Dateiposition muss von einem spring el Ausdruck ausgewertet werden.Verwenden Sie die Feder, um eine Textdatei zu laden, deren Speicherort als Feder definiert ist.

Diese Funktion befindet sich derzeit im Frühjahr, die Property-Dateien lädt, kann der Speicherort beliebig sein Spring EL.

Dies ist genau das, was wir wollen, aber nicht eine Eigenschaftendatei zu laden, nur eine Textdatei.

So versuchen wir weiter unten:

Wir verwenden ResourceLoader

@Autowired 
private ResourceLoader resourceLoader; 
//And then .... 
resourceLoader.getResource("classpath:myfile.txt"); 

Wie auch immer resourceLoader.getResource("classpath:/conf/#{environment.getActiveProfiles()[1]}}/sample.txt") funktioniert nicht.

Es scheint, dass die resourceLoader.getResource die Feder EL nicht analysiert.

Obwohl wir die EL analysieren und dann die Datei von Ressourcenlader bekommen können, fragen wir uns, ob es einfacher gemacht werden kann, kann mit einigen eingebauten Funktion sein.

Antwort

2

Es scheint, dass die ResourceLoader.getResource die Spring EL nicht analysiert.

Der Ressourcenlader analysiert den SPEL nicht, der Anwendungskontext tut dies, während er geladen wird.

Inject den Wert in ein String-Feld ...

@Value("classpath:/conf/#{environment.getActiveProfiles()[1]}/sample.txt") 
private String location; 

und

resourceLoader.getResource(this.location); 
Verwandte Themen