Injecter de la valeur de l'enum dans une propriété à l'aide de printemps
J'ai un enum similaire à ci-dessous
public enum MyEnum {
ABC("some string"),
DEF("some string"),
GHI("another string");
String value;
private MyEnum(String value) {
this.value = value;
}
public String value() {
return this.value;
}}
Et je voudrais faire un util:carte à l'aide de la valeur de l'énumération que la clé enum lui-même. La carte devrait ressembler à ceci:
"some string" -> "mapped output 1"
"another string" -> "mapped output 2"
Je sais que je peux utiliser util:constant pour obtenir les enum, mais j'ai besoin de la valeur de l'enum représente.
Donc mon fichier de config à la minute ressemble à ceci:
<util:constant id="firstKey" static-field="package.MyEnum.ABC"/>
<util:constant id="secondKey" static-field="package.MyEnum.GHI" />
<util:map id="myMap">
<entry key-ref="firstKey" value="mapped output 1" />
<entry key-ref="secondKey" value="mapped output 2" /></util:map>
Est-il un moyen que je peux obtenir .valeur() ou même d'obtenir l'accès à la propriété de la valeur de l'utiliser comme clé?
J'ai essayé de déclarer le type de clé à chaîne, dans l'espoir de printemps fonctionnerait, mais il semble avoir tout simplement ignoré cette.
À l'aide de printemps 2.5.1 et je ne peux pas modifier l'enum
Vous devez vous connecter pour publier un commentaire.
Si vous n'avez pas accès à l'expression de la langue, vous devrez revenir explicite de
MethodInvokingFactoryBean
Vous pourrait raccourcir le cycle répétitif de XML un peu avec un résumé parent bean définition.
Vous pouvez également ignorer la
MethodInvokingFactoryBean
et il suffit d'utilisermais que signifie déclarant séparé de haut niveau de haricots pour chaque enum constante, ainsi que pour leur
value()
, tandis que l'utilisation de MIFB vous permet d'utiliser anonyme intérieure haricots.Ici est de savoir comment obtenir la valeur injectée ci-dessous est le printemps de configuration de spring 2.5.
Dans l'ordre pour que cela fonctionne, vous avez besoin de la méthode toString sur votre enum.