FactoryBean是一種方式。這很簡單,試試吧。所有你需要做的就是創建一個類實現FactoryBean
和bean定義文件中引用它:現在
package some.package;
import org.springframework.beans.factory.FactoryBean;
public class ExampleFactory implements FactoryBean {
private String type;
public Object getObject() throws Exception {
//Logic to return beans based on 'type'
}
public Class getObjectType() {
return YourBaseType.class;
}
public boolean isSingleton() {
//set false to make sure Spring will not cache instances for you.
return false;
}
public void setType(final String type) {
this.type = type;
}}
,在bean定義文件,提出:
<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>
它將基於策略使物體你在ExampleFactory.getObject()
執行。
聽起來像你應該考慮一個工廠模式在這裏? –
感謝您的回覆,春天沒有提供任何其他方式嗎? –
1.我不認爲創建額外的對象會對性能產生任何明顯的影響 - GC對於收集年輕對象非常優化。 2.我不確定IoC容器是不是創建業務對象的好地方 - 尤其是實體,這些實體可能通過兼容JPA的框架進行更好的管理。 –