控制Spring工厂创建对象的个数
通过控制反转的设计理念,我们可以将对象的创建交给Spring工厂来完成。
但是对象创建的次数同样是需要留意的。
1. 如何控制简单对象的创建个数
在Spring配置文件中通过scope
属性来指定:
<bean id="account" scope="singleton|prototype" class="xxxx.Account"/>
sigleton
: 只会创建⼀次简单对象 默认值prototype
: 每⼀次都会创建新的对象
2. 如何控制复杂对象的创建个数
继承FactoryBean接口同时重写isSingleton()
方法。
public boolean isSingleton() {
return true; // 只会创建⼀次
return false; // 可以创建多次
}
如没有isSingleton⽅法 还是通过scope属性 进⾏对象创建次数的控制
3. 为什么要限制创建对象的个数
因为有一些大的对象会占用很多资源,所以需要限制个数,而有些对象朝生夕死,所以不需要控制创建个数。
-
什么样的对象只创建一次?
1. SqlSessionFactory 2. DAO 3. Service
-
什么样的对象每一次都要创建新的?
1. Connection 2. SqlSession | Session 3. Struts2 Action