第一季:7Spring Bean的作用域之间有什么区别
题目
Spring Bean的作用域之间有什么区别
2.6 bean的作用域★
在Spring中,可以在< bean>元素的scope属性里设置bean的作用域,以决定这个bean是单实例的还是多实例的。
默认情况下,Spring只为每个在I0C容器里声明的bean创建唯一一个实例,整个IOC容器范围内都能共享该实例:所有后续的getBean()调用和bean引用都将返回这个唯一的bean实例。该作用域被称为singleton,它是所有bean的默认作用域。
1.Spring Bean的作用域之间有什么区别
在Spring的配置文件中,给bean加上scope属性来指定bean的作用域如下:
singleton:默认值。唯一 bean 实例,Spring 中的 bean 默认都是单例的。在IOC容器的创建的时候创建Bean
prototype:原型的,每次请求调用getBean()都会创建一个新的 bean 实例。在IOC容器的创建的时候不会创建Bean
request: 每一次 HTTP 请求都会产生一个新的 bean,该 bean 仅在当前WebApplicationContext内有效。
session:每一次 HTTP 请求都会产生一个新的 bean,不同的HTTP session 使用不用的bean,该 bean 仅在当前WebApplicationContext内有效。
global-session:全局session作用域,仅仅在基于portlet的web应用中才有意义,Spring5已经没有了。Portlet是能够生成语义代码(例如:HTML)片段的小型Java Web插件。它们基于portlet容器,可以像servlet一样处理HTTP请求。但是,与 servlet 不同,每个 portlet 都有不同的会话。