J. Bloch 写了以下关于对象创建的内容:
Conversely, avoiding object creation by maintaining your own object pool is a bad idea unless the objects in the pool are extremely heavyweight
因此,如果我们开始以声明方式创建太多 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 beans 中声明这样的工厂不是一个坏主意吗?
最佳答案
我认为 Joshua 建议的背景是创建对象的成本很高 - 极其重量级
。您创建对象池以重用并避免昂贵的创建,例如
连接池等。您所指的框架(Spring)本身在其基础设施代码中使用了大量此类工厂。所以我认为应该
归结为您的应用程序中是否需要此类工厂。使用此类工厂的每个应用程序线程将创建它自己的上下文对象,并且数量将取决于对工厂 bean 的此类请求。
关于java - 了解有效的对象创建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30977922/