FactoryBean is the way to go. It is very simple, try it. All you have to do is create a class that implements FactoryBean and reference it in the bean definition file:
package some.package; import org.springframework.beans.factory.FactoryBean; public class ExampleFactory implements FactoryBean { private String type; public Object getObject() throws Exception {
Now, in the bean definition file, put:
<bean id="cached1" class="some.package.ExampleFactory"> <property name="type" value="X" /> </bean> <bean id="cached2" class="some.package.ExampleFactory"> <property name="type" value="Y" /> </bean>
It will create objects based on the strategy implemented in ExampleFactory.getObject() .
source share