У меня определен автономный тип перечисления, примерно так:
package my.pkg.types;
public enum MyEnumType {
TYPE1,
TYPE2
}
Теперь я хочу вставить значение этого типа в свойство bean-компонента:
<bean name="someName" class="my.pkg.classes">
<property name="type" value="my.pkg.types.MyEnumType.TYPE1" />
</bean>
... и это не сработало :(
Как мне ввести Enum в Spring bean?
Используйте дочерний элемент value вместо атрибута value и укажите имя класса Enum:
Преимущество этого подхода перед простой записью
value="ALIEN"
заключается в том, что он также работает, если Spring не может вывести фактический тип перечисления из свойства (например, объявленный тип свойства является интерфейсом). Взято из комментария Аракнида.источник
Я знаю, что это действительно старый вопрос, но в случае, если кто-то ищет более новый способ сделать это, используйте пространство имен spring util:
Как описано в весенней документации .
источник
Вы можете просто сделать «TYPE1».
источник
Вот что для меня сделало MessageDeliveryMode - это перечисление, в котором bean-компонент будет иметь значение PERSISTENT:
источник
Использование SPEL и P-NAMESPACE:
источник
Чтобы быть конкретным, установите значение как имя константы типа перечисления, например, «TYPE1» или «TYPE2» в вашем случае, как показано ниже. И будет работать:
источник
Вы можете написать Bean Editors (подробности в Spring Docs), если хотите добавить дополнительную ценность и писать в пользовательские типы.
источник
Пример Spring-интеграции, маршрутизация на основе поля Enum:
конфигурации:
источник