您的位置 首页 java

Java核心知识 Spring原理八 Spring Bean 作用域

Spring 3 中为 Bean 定义了 5 中作用域,分别为 singleton(单例)、prototype(原型)、

request、session 和 global session,5 种作用域说明如下:

singleton:单例模式(多线程下不安全)

1. singleton:单例模式,Spring IoC 容器中只会存在一个共享的 Bean 实例,无论有多少个

Bean 引用它,始终指向同一对象。该模式在多线程下是不安全的。Singleton 作用域是

Spring 中的缺省作用域,也可以显示的将 Bean 定义为 singleton 模式,配置为:

<bean id=”userDao” class=”com.ioc.UserDaoImpl” scope=”singleton”/>

prototype:原型模式每次使用时创建

2. prototype:原型模式,每次通过 Spring 容器获取 prototype 定义的 bean 时,容器都将创建

一个新的 Bean 实例,每个 Bean 实例都有自己的属性和状态,而 singleton 全局只有一个对

象。根据经验,对有状态的bean使用prototype作用域,而对无状态的bean使用singleton

作用域。

Request:一次 request 一个实例

3. request:在一次 Http 请求中,容器会返回该 Bean 的同一实例。而对不同的 Http 请求则会

产生新的 Bean,而且该 bean 仅在当前 Http Request 内有效,当前 Http 请求结束,该 bean

实例也将会被销毁。

<bean id=”loginAction” class=”com.cnblogs.Login” scope=”request”/>

session

4. session:在一次 Http Session 中,容器会返回该 Bean 的同一实例。而对不同的 Session 请

求则会创建新的实例,该 bean 实例仅在当前 Session 内有效。同 Http 请求相同,每一次

session 请求创建新的实例,而不同的实例之间不共享属性,且实例仅在自己的 session 请求

内有效,请求结束,则实例将被销毁。

<bean id=”userPreference” class=”com.ioc.UserPreference” scope=”session”/>

global Session

5. global Session:在一个全局的 Http Session 中,容器会返回该 Bean 的同一个实例,仅在

使用 portlet context 时有效。

文章来源:智云一二三科技

文章标题:Java核心知识 Spring原理八 Spring Bean 作用域

文章地址:https://www.zhihuclub.com/193936.shtml

关于作者: 智云科技

热门文章

发表回复

您的电子邮箱地址不会被公开。

网站地图