14. října 2008

Spring bean z Java enumu

Dneska jsem potřeboval vytvořit ve Spring IoC Java enum, ale jak na to. Než jsem začal vytvářet nějakou factory, řekl jsem si, že to už musí být vyřešené. Google pomohl a našel jsem blog post Creating a Spring Bean from a Java 5 Enum.

Ve stručnosti se věc dá shrnout do dvou ukázek, první jest pro Spring 1.2.2 a menší:

<bean id="latte" class="cz.xxx.PersonType" factory-method="valueOf">
<constructor-arg>
<value>ADULT</value>
</constructor-arg>
</bean>
Kde ADULT je jméno konkrétního enumu. Domnívám se (nezkoušel jsem), že tuto variantu je nutné použít i ve Springu 1.2.2 a vyšším, pokud se odkazujete na enum v okamžiku, kdy není jasné, že výsledkem má být enum (např. položky listu, mapy).

Používáte-li Spring 1.2.2 a starší, pak na místě kde má být enum stačí použít:
<bean id="person" class="cz.xxx.Person">
<property name="type" value="STUDENT"/>
</bean>
Jednoduché, ale moc šikovné. Tak to mám rád.

1 komentář:

Lukáš Křečan řekl(a)...

Ve verzi 2.5 by mělo teoreticky jít použít i toto
<util:constant static-field="cz.xxx.PersonType.ADULT"/>
Viz. dokumentace