[英]Understanding effective object creation
J. Bloch写了以下有关对象创建的内容:
相反,除非维护池中的对象非常重,否则通过维护自己的对象池来避免创建对象是一个坏主意。
因此,如果我们开始声明式创建过多的bean,则使用在容器内部创建的spring bean可能会造成一些危害。 例如,我通过偏斜提供了Factory
对象的实例:
<bean id="userFactory" class="com.foo.factory.UserFactory">
<property name="creatorMap">
<!-- map's declaration -->
</property>
</bean>
public class UserFactory{
Map<UserType, Creator> creators;
public User create(UserType t){
return creators.get(t).create();
}
}
public enum UserType{
VIP,
GUEST,
ACTIVE,
//etc
}
public interface Creator{
public User create();
}
在spring bean中声明这样的工厂不是一个坏主意吗?
我认为,约书亚建议的背景对于创建对象( extremely heavyweights
对象)而言是昂贵的。 您创建对象池以重用并避免昂贵的创建,例如连接池之类的东西。您所引用的框架(Spring)本身在其基础结构代码中使用了许多这样的工厂。 因此,我认为这应归结为您在申请中是否需要此类工厂。 每个使用这种工厂的应用程序线程都会创建它自己的上下文对象,并且数量取决于对工厂bean的此类请求。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.