2010-11-09 20 views
6
<bean id="xyz" class="com.abc" > 
    <property name="name"> 
    <bean   
      class="org.springframework.beans.factory.config.FieldRetrievingFactoryBean"> 
     <property name="staticField" value="com.abc.staticname" /> 
    </bean> 
    </property> 
</bean> 

C'est ainsi que je l'habitude de définir le nom de la classe com.abc. Maintenant, les noms devraient venir d'une autre énumération. Comment accéder à la valeur enum pour définir la propriété name de ma classe com.abc?Comment utiliser Spring pour obtenir la valeur d'un Enum

Répondre

7

Je ne vois pas pourquoi vous ne pouvez pas continuer à utiliser FieldRetrievingFactoryBean, c'est pour ça.

C'est un peu plus facile à utiliser que votre exemple ne le suggère. En outre, il y a la syntaxe basée sur le schéma plus facile qui fait la même chose, <util:constant>. Les deux approches sont documentées (et comparées) here.

(Rappelez-vous que les valeurs ENUM sont des champs juste statiques sur la classe ENUM)

+0

Merci, le lien a été très utile. – Shamik

2

Vous pouvez simplement utiliser le nom de ENUM comme la valeur, et le printemps détecte automatiquement qu'il est un champ statique du type ENUM et de l'utiliser . Ainsi, par exemple, si vous avez un com.mycompany.MyEnum enum avec des valeurs SOMEVAL, ANOTHERVAL, vous pouvez utiliser:

<property name="myEnumProperty" value="SOMEVAL" /> 

Cela vous permettra d'éviter FieldRetrievingFactoryBean et <util:constant> tout à fait.