Tenho um tipo de enum autônomo definido, algo assim:
package my.pkg.types;
public enum MyEnumType {
TYPE1,
TYPE2
}
Agora, quero injetar um valor desse tipo em uma propriedade de bean:
<bean name="someName" class="my.pkg.classes">
<property name="type" value="my.pkg.types.MyEnumType.TYPE1" />
</bean>
... e não funcionou :(
Como devo injetar um Enum em um feijão de primavera?
Use o elemento filho de valor em vez do atributo de valor e especifique o nome da classe Enum:
A vantagem dessa abordagem sobre apenas escrever
value="ALIEN"
é que também funciona se o Spring não puder inferir o tipo real do enum da propriedade (por exemplo, o tipo declarado da propriedade é uma interface). Adaptado do comentário de araqnid.fonte
Eu sei que esta é uma pergunta muito antiga, mas caso alguém esteja procurando a maneira mais nova de fazer isso, use o namespace spring util:
Conforme descrito na documentação da primavera .
fonte
Você pode apenas fazer "TYPE1".
fonte
Isso é o que fez para mim MessageDeliveryMode é o enum que o bean terá o valor PERSISTENT:
fonte
Usando SPEL e P-NAMESPACE:
fonte
Para ser específico, defina o valor como o nome de uma constante do tipo enum, por exemplo, "TYPE1" ou "TYPE2" no seu caso, conforme mostrado abaixo. E vai funcionar:
fonte
Você pode escrever Editores de Bean (os detalhes estão no Spring Docs) se quiser adicionar mais valor e escrever em tipos personalizados.
fonte
Exemplo de integração Spring, roteamento baseado em um campo Enum:
config:
fonte