Spring 支持五种 bean 的作用域:
(1)singleton:单例模式,spring 的默认作用域,每个容器中只有一个 bean 的实例,随着容器的销毁而销毁。(因为整个容器只有一个对象,并存在容器中,如果对象被随意销毁,再想获取对象就获取不到了,所以正常情况下单例对象不会销毁,随着容器的销毁而销毁)
(2)prototype:多例模式,每次从容器获取时都会创建一个新的 bean 对象。使用 Java 垃圾回收机制销毁对象。(每次获取对象是都会创建新的对象,并且不存在容器中,不然容器中要存很多这种对象。所以多例对象也不由 Spring 来销毁,直接使用 Java 的垃圾回收机制销毁对象,什么时候没用了就销毁对象)
(3)request:每次请求创建一个单例对象,只在 web 环境有效,当处理请求结束,bean 对象将被销毁。
(4)session:每次会话创建一个单例对象,只在 web 环境有效,当 HTTP Session 最终被废弃的时候,bean 对象也会被销毁。
(5)global-session:一次集群环境的会话创建一个对象,只在 web 环境有效,当集群环境下的 session 销毁时,bean 对象也会被销毁。