1. 控制简单对象的创建次数
配置文件中进行scope属性的配置:
sigleton:只会创建⼀次简单对象,也是默认值;
prototype:每⼀次都会创建新的对象;
<!--控制简单对象创建次数-->
<bean id="scope" scope="singleton" class="com.bearjun.Scope"/>
2. 控制复杂对象的创建次数
如果是FactoryBean方式创建的复杂对象:
public class xxxFactoryBean implements FactoryBean {
// 省略其余实现方法......
public boolean isSingleton() {
return true; // 只会创建⼀次
return false; // 每⼀次都会创建新的
}
}
注意:如果没有isSingleton方法,则还是通过scope属性进行设置。
3. 为什么要控制对象的创建次数?
最大的好处:节省不必要的内存浪费
- 什么样的对象只创建一次?
SqlSessionFactory、DAO、Service(重量级的、可以被共用的、线程安全的)....
- 什么样的对象每一次都需要创建新的呢?
Connection、SqlSession、Session(不能被共用的,线程不安全的)....
评论区