目录
-
在Spring中,bean作用域用于确定bean实例应该从哪种类型的Spring容器中返回给调用者。
一、bean的五种作用域
-
作用域 说明 singleton 默认值,Bean以单例方式存在spring IoC容器 prototype 每次从容器中调用Bean时都返回一个新的实例,相当于执行newInstance() request WEB 项目中,Spring 创建一个 Bean 的对象,将对象存入到 request 域中 session WEB 项目中,Spring 创建一个 Bean 的对象,将对象存入到 session 域中 application WEB 项目中,Spring 创建一个 Bean 的对象,将对象存入到 ServletContext 域中 -
可以通过
<bean>
标签的scope
属性控制bean的作用范围,其配置方式如下所示:
<bean id="..." class="..." scope="singleton"/>
-
需要根据场景决定对象的单例、多例模式
单例:Service、DAO、SqlSessionFactory(或者是所有的工厂)
多例:Connection、SqlSession
二、单例和多例对比
多例创建5次对象
for (int i = 0; i < 5; i++) {
ApplicationContext aa = new ClassPathXmlApplicationContext("applicationContext.xml");
System.out.println(aa.getBean("UserService"));
}