Spring中Bean的作用域

(1)考察目标

主要考察对spring中核心容器管理bean对象的认识。

(2)题目分析

Spring IOC容器在根据配置(可以是xml,也可以是注解)创建一个Bean对象实例时,可以为Bean指定实例的作用域。

作用域包括:

singleton(单例模式)

prototype(原型模式)

request(HTTP请求)

session(会话)

global-session(全局会话,在spring5.x版本中已经移除了)

五种作用范围说明:

singleton

使用该属性定义Bean时,IOC容器仅创建一个Bean实例,IOC容器每次返回的是同一个Bean实例。

prototype

使用该属性定义Bean时,IOC容器可以创建多个Bean实例,每次返回的都是一个新的实例。

request

该属性仅对HTTP请求产生作用,使用该属性定义Bean时,每次HTTP请求都会创建一个新的Bean,适用于WebApplicationContext环境。

session

该属性仅用于HTTP Session,同一个Session共享一个Bean实例。不同Session使用不同的实例。

global-session

该属性仅用于HTTP Session,同session作用域不同的是,所有的Session共享一个Bean实例。

Bean的生命周期

在实际开发中,我们一般常用的就是单例模式和原型模式。

单例模式生命周期与容器相同。

原型模式生命周期,是每次使用时创建新的对象,用完等待垃圾回收器回收。

(3)应用场景

Bean的作用域基本上使用的都是单例模式,在使用struts2作为表现层框架时,Action对象必须设置为原型(多例)模式。

(4)总结

本题考察的是:

spring中核心容器中bean对象作用范围以及生命周期

点击此处
隐藏目录