Using Enums with map in Spring

If you want to use enums as a key in a map in spring, you can use the following code in your spring.xml:

<bean id="fileCopyService" class="my.package.FileCopyService">
<property name="fileCopier">
<map>
<entry key="IMAGE">
<ref bean="imageFileCopier"/>
</entry>
<entry key="VIDEO">
<ref bean="videoFileCopier"/>
</entry>
<entry key="AUDIO">
<ref bean="audioFileCopier"/>
</entry>
</map>
</property>
</bean>

<bean id="imageFileCopier" class="my.package.ImageFileCopier"/>
<bean id="videoFileCopier" class="my.package.VideoFileCopier"/>
<bean id="audioFileCopier" class="my.package.AudioFileCopier"/>

and your FileCopyService class is as follows:

private Map<ContentType, FileCopier> fileCopier = new HashMap<ContentType, FileCopier>();

and that is all. So you can access a fileCopier withing the code with :

fileCopier.get(getContentType())

no if – else statements, or long switches.