Spring Bean Scope
singleton
默认情况,为每个Spring IoC容器将单个Bean定义的Scope扩大到单个对象实例。
只有一个单例bean的共享实例被管理,所有对具有符合改bean定义的ID的bean的请求都会被spring容器返回改特定的bean实例。
prototype
将单个bean对应的scope扩大到任何数量的对象实例。
每次对该特定bean的请求都会创建一个新的bean实例。作为一项规则,你应该对所有有状态的bean使用prototype scope,对无状态bean使用singletong scope。
与其他scope相比,spring并不管理prototype bean的完整生命周期。容器对prototype对象进行实例化,配置和其他方面的组装,并将其交给客户端,而对改prototype实例没有进一步的记录。
request
将单个bean对应的scope扩大到单个HTTP请求的声明周期,即每个HTTP请求都有自己的Bean实例,改实例是在单个bean定义的基础上创建的。只在web感知的spring ApplicationContext的上下文中生效。
session
将单个bean定义的scope扩大到一个HTTP Session的生命周期。
application
将单个bean定义的scope扩大到ServletConetxt的生命周期中。
websocket
将单个bean定义的scope扩大到Websocket的生命周期。