Spring Bean的作用域之间有什么区别?
在Spring中,可以在<bean>
元素的scope属性里设置bean的作用域,以决定这个bean是单例的还是多例的。
默认情况下,Spring只为每个在IOC容器里声明的bean创建唯一一个实例,整个IOC容器范围内都能共享该实例:所有后续的getBean()
调用和bean
引用都将返回这个唯一的bean
实例。该作用域称为singleton
,它是bean
的默认作用域。
作用域的类别跟说明
singleton
:在SpringIOC容器中仅存在一个Bean实例,Bean以单实例的方式存在prototype
:每次调用getBean()
时都会返回一个新的实例request
:每次HTTP请求都会创建一个新的Bean
,该作用域仅适用于WebApplicationContext环境session
:同一个HTTP Session共享一个Bean,不同的HTTP Session使用不同的Bean,该作用域仅适用于WebApplicationContext环境
简述
bean的作用域:可以通过<bean>
元素的scope属性来指定bean作用域
singleton
:默认值。当IOC容器一创建就会创建bean的实例,而且是单例的,每次得到的都是同一个prototype
:原型的。当IOC容器一创建不再实例化该bean,每次调用getBean方法时再实例化该bean,而且每调用request
:每次请求实例化一个beansession
:在一次会话中共享一个bean