bean的生命周期及作用域
时间: 2024-03-07 09:42:29 浏览: 22
在Spring框架中,Bean的生命周期分为以下阶段:
1. 实例化:通过构造函数或工厂方法创建对象实例。
2. 属性赋值:对Bean的属性进行赋值。
3. Aware接口:如果Bean实现了Aware接口,则调用对应的set方法,将容器相关的对象传入Bean中。
4. BeanPostProcessor前置处理器:在Bean初始化之前,对Bean进行加工处理。
5. 初始化方法:如果Bean实现了InitializingBean接口,则调用afterPropertiesSet()方法。同时,如果定义了init-method,则调用指定的初始化方法。
6. BeanPostProcessor后置处理器:在Bean初始化之后,对Bean进行加工处理。
7. 使用Bean:此时,Bean可以被容器使用了。
8. 销毁方法:容器关闭时,如果Bean实现了DisposableBean接口,则调用destroy()方法。同时,如果定义了destroy-method,则调用指定的销毁方法。
Bean的作用域有以下几种:
1. singleton(单例):在整个应用程序中只存在一个实例。
2. prototype(原型):每次注入或者通过ApplicationContext获取都会创建一个新的实例。
3. request(请求):在一次HTTP请求中创建一个实例。
4. session(会话):在一次HTTP会话中创建一个实例。
5. global session(全局会话):在基于portlet的web应用中有效,一个portlet定义一个全局会话。
相关问题
bean的生命周期以及作用域
在Spring框架中,Bean是指被Spring容器所管理的对象。当我们在Spring配置文件或注解中定义一个Bean时,这个Bean会经历一系列的生命周期阶段,包括以下7个阶段:
1. 实例化Bean对象:当Spring容器启动时,会根据配置文件或注解中的定义,创建Bean的实例。
2. 设置Bean的属性:Spring容器会自动将配置文件或注解中定义的属性值设置到Bean实例中。
3. 调用Bean的初始化方法:如果Bean实现了InitializingBean接口或在配置文件或注解中指定了初始化方法,Spring容器会在实例化和属性设置完成后调用Bean的初始化方法。
4. Bean已经可以使用:此时,Bean已经可以被其他对象所引用和使用。
5. 调用Bean的业务方法:在Bean被其他对象所引用和使用时,Spring容器会自动调用Bean的业务方法。
6. 调用Bean的销毁方法:如果Bean实现了DisposableBean接口或在配置文件或注解中指定了销毁方法,Spring容器在关闭时会自动调用Bean的销毁方法。
7. Bean被销毁:此时,Bean已经被Spring容器销毁,不再可用。
在Spring中,Bean的作用域定义了Bean实例的生命周期和使用范围。Spring框架提供了5种标准的作用域:
1. singleton:单例模式,一个Bean实例在整个应用程序中只创建一次。
2. prototype:原型模式,每次请求Bean时都会创建一个新的Bean实例。
3. request:每个HTTP请求都会创建一个新的Bean实例,在请求结束后,Bean实例就会被销毁。
4. session:每个HTTP会话都会创建一个新的Bean实例,在会话结束后,Bean实例就会被销毁。
5. global-session:在基于portlet的web应用中,每个portlet应用都会创建一个新的Bean实例,在portlet应用结束后,Bean实例就会被销毁。
通过定义Bean的作用域,我们可以控制Bean实例的生命周期和使用范围,从而更好地管理应用程序中的对象。
springbean的作用域和生命周期
Spring Bean 的作用域和生命周期是 Spring 框架中非常重要的概念。
作用域:Spring Bean 的作用域指的是 Bean 实例的创建和销毁方式。Spring 支持多种 Bean 的作用域,包括 Singleton、Prototype、Request、Session、Global Session 等。
- Singleton:单例模式,一个 Bean 实例在整个应用中只被创建一次。
- Prototype:原型模式,每次从容器中获取 Bean 时都会创建一个新的实例。
- Request:每个 HTTP 请求都会创建一个 Bean 实例,该 Bean 实例仅在当前 HTTP 请求内有效。
- Session:每个 HTTP Session 都会创建一个 Bean 实例,该 Bean 实例仅在当前 HTTP Session 内有效。
- Global Session:该作用域仅适用于基于 Portlet 的 Web 应用,每个全局 HTTP Session 都会创建一个 Bean 实例,该 Bean 实例仅在当前全局 HTTP Session 内有效。
生命周期:Spring Bean 的生命周期指的是 Bean 实例的创建、初始化和销毁过程。Spring 容器负责管理 Bean 的生命周期,Bean 生命周期包括以下几个阶段:
- 实例化:创建 Bean 实例。
- 属性赋值:将 Bean 实例的属性值注入到 Bean 实例中。
- 初始化:调用 Bean 的初始化方法。
- 使用:Bean 实例可以被容器和其他 Bean 使用。
- 销毁:容器关闭或者手动销毁 Bean 实例时,调用 Bean 的销毁方法。
Spring Bean 的生命周期可以通过 BeanPostProcessor、InitializingBean 和 DisposableBean 接口、@PostConstruct 和 @PreDestroy 注解等方式进行定制。