Spring中bean的生命周期、bean标签scope属性的可取值

一、bean的生命周期

在Spring框架中,Bean(对象)的生命周期经历以下阶段:

  1. 实例化:在这个阶段,Spring容器根据配置或注解创建Bean的实例。这可以通过构造函数实例化、静态工厂方法或实例工厂方法实现。

  2. 属性赋值:在实例化后,Spring容器会为Bean的属性注入值,可以通过构造函数注入、属性的setter方法注入或注解方式进行属性赋值。

  3. 初始化:在所有属性被赋值后,Spring容器会调用Bean的初始化方法。可以使用@PostConstruct注解标记初始化方法,也可以配置初始化方法的名称。

  4. 使用:在初始化完成后,Bean可以被应用程序使用。它可以响应请求、处理业务逻辑等。

  5. 销毁:当Bean不再需要时,Spring容器会调用Bean的销毁方法进行清理工作。可以使用@PreDestroy注解标记销毁方法,也可以配置销毁方法的名称。

注意,Bean的销毁是可选的,不是所有的Bean都需要销毁方法。对于单例作用域的Bean,默认情况下,当Spring容器关闭时,会调用单例Bean的销毁方法。对于原型作用域的Bean,Spring容器不会管理其销毁,需要手动释放资源。

此外,Spring还提供了一些扩展点,允许开发人员在Bean的生命周期中插入自定义逻辑,例如使用BeanPostProcessor接口进行前置处理或后置处理,以及使用BeanFactoryPostProcessor接口对BeanFactory进行后置处理。

通过控制Bean的生命周期,Spring框架提供了灵活的管理和配置机制,使开发人员能够在不同的阶段对Bean进行自定义操作,并确保Bean能够正确地初始化和销毁。

二、bean标签scope的可取值

1、singleton:每个Spring容器中只存在一个Bean实例,该实例是全局共享的。无论何时请求该Bean,都会返回同一个实例。

2、prototype:每次请求Bean时都会创建一个新的实例。每个实例都是独立的,不共享状态。

3、Request:Web项目中,每个HTTP请求都会创建一个新的实例。在同一个请求中,多次请求该Bean会得到同一个实例,但不同请求之间的Bean实例是隔离的。

4、Session:Web项目中,每个HTTP会话(Session)中只存在一个Bean实例。在同一个会话中,多次请求该Bean会得到同一个实例,但不同会话之间的Bean实例是隔离的。

5、GlobalSession:在基于Portlet的Web应用中,每个全局会话(Global Session)中只存在一个Bean实例。

在Spring 2.0之前,有singleton和prototype两种;

在Spring 2.0之后,为支持web应用的ApplicationContext,增强另外三种:request,session和global session类型,它们只实用于web程序,通常是和XmlWebApplicationContext共同使用。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值