2012-11-02 10 views
7

Ich möchte verschiedene Ressourcendateien basierend auf einer Bedingung importieren. Ist das möglich?wird SpEL in Importanweisungen unterstützt?

arbeiten diese nicht:

<import resource="#{ systemProperties['foo'] }.xml" /> 

<import resource="#{ T(my.testpkg).getValue() }.xml" /> 
+2

Wenn Sie auf Frühling sind 3.1 oder höher, sollten Sie wahrscheinlich verwenden [* Bean Definition Profile *] (http://blog.springsource.com/2011/02/11/spring-framework-3-1-m1 -Released /) für diese Art von Sache, wenn Sie können. Ich denke, '' s werden relativ früh aufgelöst, bevor das Bean-Diagramm erstellt wird. – millimoose

+0

Nun, Platzhalter $ {...} scheinen in Importanweisungen zu funktionieren, dies wäre ein nützliches Feature. –

+1

Diese Platzhalter sind immer noch etwas Besonderes: http://blog.springsource.com/2011/02/15/spring-3-1-m1-unified-property-management/. Ihre Werte müssen * vor * dem Parsen verfügbar sein. (Oder vor einem anderen Schritt bei der Verarbeitung der Bean-Definitionen, ich bin nicht so vertraut mit Spring Internals.) – millimoose

Antwort

1

Spel unterstützt wird, aber Frühling löst die Import-Anweisung auf sehr früh.

Wenn der Frühling ist Import-Anweisungen lösen, Eigenschaft Platzhalter ist noch nicht geklärt.

Zum Beispiel:

definieren Sie die folgenden Eigenschaften:

import.fileName=${blah} 
blah=properties.props 

Wir können dann mit der 'import.fileName' Eigenschaft als Parameter für den Import

<import resource="${import.fileName}" /> 

Dies löst auf :

<import resource="${blah}" /> 

Und vermutlich existiert die Ressource '$ {blah}' nicht.

Dass gesagt wird, können Sie Eigenschaften verwenden, um Importdatei-Namen auflösen.

Verwandte Themen