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对象作用范围以及生命周期。
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/tech/java/253852.html