Mam zdefiniowany samodzielny typ wyliczeniowy, coś takiego:
package my.pkg.types;
public enum MyEnumType {
TYPE1,
TYPE2
}
Teraz chcę wstrzyknąć wartość tego typu do właściwości fasoli:
<bean name="someName" class="my.pkg.classes">
<property name="type" value="my.pkg.types.MyEnumType.TYPE1" />
</bean>
... i to nie zadziałało :(
Jak wstrzyknąć Enum do fasoli jarskiej?
Użyj elementu value child zamiast atrybutu value i określ nazwę klasy Enum:
Zaletą tego podejścia nad zwykłym pisaniem
value="ALIEN"
jest to, że działa również wtedy, gdy Spring nie może wywnioskować rzeczywistego typu wyliczenia z właściwości (np. Zadeklarowanym typem właściwości jest interfejs). Na podstawie komentarza araqnid.źródło
Wiem, że to naprawdę stare pytanie, ale jeśli ktoś szuka nowszego sposobu, aby to zrobić, użyj przestrzeni nazw spring util:
Jak opisano w dokumentacji sprężyny .
źródło
Możesz po prostu zrobić „TYPE1”.
źródło
Oto, co zrobiłem dla mnie MessageDeliveryMode to wyliczenie, które fasola będzie miało wartość PERSISTENT:
źródło
Używanie SPEL i P-NAMESPACE:
źródło
Aby być konkretnym, ustaw jako wartość nazwę stałej typu wyliczenia, np. „TYPE1” lub „TYPE2” w twoim przypadku, jak pokazano poniżej. I zadziała:
źródło
Możesz pisać Bean Editors (szczegóły w Spring Docs), jeśli chcesz dodać więcej wartości i pisać do niestandardowych typów.
źródło
Przykład integracji Spring, routing oparty na polu Enum:
config:
źródło