3.5 bean作用域

当创建bean定义时,您将创建一个 recipe 用于创建由该bean所定义的类的实际实例。 bean定义是一个配方(模型)的想法很重要,因为它意味着,和一个类一样,您可以从单个配方(模型)创建多个对象实例。

你不仅可以控制要插入到从特定bean定义创建的对象的各种依赖性和配置值,还可以控制从特定bean定义创建的对象的 scope 。这种方法是强大和灵活的,因为您可以选择通过配置创建的对象的作用域,而无需在代码层面去控制。 bean可以被定义为部署在多个作用域之一:开箱即用,Spring框架支持六个作用域,其中五个作用域(这里就和之前的文档有区别了,可以做相应的对比)仅在使用Web感知的ApplicationContext时可用。

以下作用域是开箱即用的。您还可以创建自定义作用域

Table 3.3. Bean scopes

Scope Description
singleton 默认的。一个bean定义,在一个IoC容器内只会产生一个对象。
prototype 一个bean定义会产生多个对象实例
request 一个bean定义产生的bean生命周期为一个HTTP请求;也就是,每一个HTTP请求都会根据bean定义产生一个对象实例。该作用域只有在Spring web ApplicationContext 上下文环境中才有效。
session 产生的bean生命周期在HTTP 会话期间。该作用域只有在Spring web ApplicationContext 上下文环境中才有效
application 将单个bean定义范围限定为ServletContext的生命周期。 该作用域只有在Spring web ApplicationContext 上下文环境中才有效
websocket 将单个bean定义范围限定为WebSocket的生命周期。该作用域只有在Spring web ApplicationContext 上下文环境中才有效
[Note]
从Spring 3.0开始,线程范围可用,但默认情况下未注册。 有关更多信息,请参阅SimpleThreadScope的文档。 有关如何注册此或任何其他自定义范围的说明,请参阅使用自定义范围一节。

results matching ""

    No results matching ""