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