2012-05-16 13 views
6

Ich habe eine (String, offensichtlich) Eigenschaft ausgedrückt in Minuten, die ich in eine int konvertieren möchte, bevor ich etwas Arithmetik und injiziere es in meine Spring Bean. Im Moment habe ich diese Spel Ausdruck:Spring Ausdruck Sprache (spEL): String String zu int

#{T(java.lang.Integer).parseInt(myProperties['MIN_TIME']) * 60 * 1000} 

wo myProperties ist eine einfache java.util.Properties Bohne.

Nicht dass mich dieser Ausdruck besonders ärgert, aber dennoch: Hat der SPEL eine schönere, eingebaute Möglichkeit, Strings in numerische Werte zu zerlegen?

Danke!

Antwort

9

Sieht nicht so aus, z.B. schauen, wie die Entwickler schaffen sie hier: https://jira.springsource.org/browse/SPR-8716

Eine etwas kürzere Version

#{new Integer(myProperties['MIN_TIME']) * 60 * 1000} 
+0

Dies wird ausreichen. Vielen Dank! –

+0

Kann man so etwas für Annotationen machen? ** @ Größe ((min = "# {neue Ganzzahl (applicationProperties [size.min])}") private int Größe; ** – luksmir

+0

@luksmir Ich weiß es nicht .. Es ist am besten, eine neue Frage zu stellen – artbristol

0

Ein anderer Weg, dies zu tun sein könnte, ist den util-Namespace zu verwenden, um einen Immobilien-Bean zu definieren, ... Xmlns : util = "http://www.springframework.org/schema/util" ... http://www.springframework.org/schema/utilhttp://www.springframework.org/schema/util/spring-util-3.1.xsd ...

<util:properties id="apiProperties" 
    location="classpath:/api.properties" /> 
verwenden

dann die alternative Syntax für die Eigenschaften bean

@Value("#{apiProperties['api.orders.pingFrequency']}") 
private Integer pingFrequency; 

Die Federeigenschaften util bean durch den Kontext erzeugt wird und die Parse-Umwandlung, bevor der Wert zuweisen.