J'ai un type d'énumération autonome défini, quelque chose comme ceci:
package my.pkg.types;
public enum MyEnumType {
TYPE1,
TYPE2
}
Maintenant, je veux injecter une valeur de ce type dans une propriété de bean:
<bean name="someName" class="my.pkg.classes">
<property name="type" value="my.pkg.types.MyEnumType.TYPE1" />
</bean>
... et cela n'a pas fonctionné :(
Comment dois-je injecter un Enum dans un haricot de printemps?
Utilisez l'élément enfant value au lieu de l'attribut value et spécifiez le nom de classe Enum:
L'avantage de cette approche par rapport à la simple écriture
value="ALIEN"
est qu'elle fonctionne également si Spring ne peut pas déduire le type réel de l'énumération à partir de la propriété (par exemple, le type déclaré de la propriété est une interface). Adapté du commentaire d'Araqnid.la source
Je sais que c'est une question très ancienne, mais au cas où quelqu'un chercherait la nouvelle façon de le faire, utilisez l'espace de noms spring util:
Comme décrit dans la documentation du printemps .
la source
Vous pouvez simplement faire "TYPE1".
la source
C'est ce qui a fait pour moi MessageDeliveryMode est l'énumération que le bean aura la valeur PERSISTENT:
la source
Utilisation de SPEL et P-NAMESPACE:
la source
Pour être précis, définissez la valeur comme étant le nom d'une constante de type enum, par exemple "TYPE1" ou "TYPE2" dans votre cas, comme indiqué ci-dessous. Et cela fonctionnera:
la source
Vous pouvez écrire des éditeurs de bean (les détails se trouvent dans la documentation Spring) si vous souhaitez ajouter de la valeur et écrire dans des types personnalisés.
la source
Exemple d'intégration Spring, routage basé sur un champ Enum:
config:
la source