Ich habe einen eigenständigen Aufzählungstyp definiert, ungefähr so:
package my.pkg.types;
public enum MyEnumType {
TYPE1,
TYPE2
}
Jetzt möchte ich einen Wert dieses Typs in eine Bean-Eigenschaft einfügen:
<bean name="someName" class="my.pkg.classes">
<property name="type" value="my.pkg.types.MyEnumType.TYPE1" />
</bean>
... und das hat nicht funktioniert :(
Wie soll ich eine Enum in eine Frühlingsbohne injizieren?
Verwenden Sie das untergeordnete Element value anstelle des Wertattributs und geben Sie den Namen der Enum-Klasse an:
Der Vorteil dieses Ansatzes gegenüber dem reinen Schreiben
value="ALIEN"
besteht darin, dass er auch funktioniert, wenn Spring den tatsächlichen Typ der Aufzählung nicht aus der Eigenschaft ableiten kann (z. B. ist der deklarierte Typ der Eigenschaft eine Schnittstelle). Adaptiert von Araqnids Kommentar.quelle
Ich weiß, dass dies eine sehr alte Frage ist, aber falls jemand nach einem neueren Weg sucht, verwenden Sie den Spring Util-Namespace:
Wie in der Federdokumentation beschrieben .
quelle
Sie können einfach "TYPE1" machen.
quelle
Dies ist, was es für mich getan hat MessageDeliveryMode ist die Aufzählung, die die Bean den Wert PERSISTENT haben wird:
quelle
Verwenden von SPEL und P-NAMESPACE:
quelle
Um genau zu sein, setzen Sie den Wert auf den Namen einer Konstante vom Aufzählungstyp, z. B. "TYPE1" oder "TYPE2" in Ihrem Fall, wie unten gezeigt. Und es wird funktionieren:
quelle
Sie können Bean-Editoren schreiben (Details finden Sie in den Spring Docs), wenn Sie weiteren Wert hinzufügen und in benutzerdefinierte Typen schreiben möchten.
quelle
Beispiel für eine Spring-Integration, Routing basierend auf einem Enum-Feld:
config:
quelle