Spring支持bean的作用域有几种吗? 每种作用域是什么样的?
时间: 2023-06-10 18:04:35 浏览: 157
Spring支持5种作用域:singleton、prototype、request、session、global session。
1. singleton:默认作用域,容器中只会存在一个共享的实例。
2. prototype:每次请求都会创建一个新的实例。
3. request:每个 HTTP 请求都会创建一个新的实例,该实例仅在当前请求内有效。
4. session:每个 HTTP Session 会创建一个新的实例,该实例在整个会话期间有效。
5. global session:基于 Servlet 3.0+ 的全局 HTTP Session 会话中每个应用程序都会创建一个新的实例。
相关问题
spring bean的作用域?生命周期?
Spring Bean 的作用域包括 Singleton、Prototype、Request、Session、Global Session 和 Application 等。其中,Singleton 是默认的作用域,表示在整个应用中只有一个实例,而 Prototype 则表示每次请求都会创建一个新的实例。其他作用域则与 Web 应用相关。
Spring Bean 的生命周期包括实例化、属性赋值、初始化、销毁等阶段。其中,实例化是通过构造函数或工厂方法创建 Bean 实例,属性赋值则是将属性值注入到 Bean 实例中,初始化阶段则是调用 Bean 的 init 方法,销毁阶段则是调用 Bean 的 destroy 方法。Spring 容器负责管理 Bean 的生命周期,确保 Bean 在正确的时间被创建、初始化和销毁。
Spring Bean的作用域之间有什么区别?
在Spring中,Bean的作用域决定了该Bean实例的生命周期和可见性范围。Spring中支持以下五种作用域:
1. singleton(单例):在整个应用程序中只创建一个Bean实例,并且所有请求都将共享该实例。
2. prototype(原型):每次请求时都会创建一个新的Bean实例。
3. request(请求):在每个HTTP请求中创建一个Bean实例,该Bean仅在该请求的范围内可见。
4. session(会话):在每个HTTP会话中创建一个Bean实例,该Bean仅在该会话的范围内可见。
5. global session(全局会话):仅适用于基于portlet的Web应用程序,它将为每个portlet定义一个全局作用域。
在这些作用域之间的区别主要在于它们控制Bean实例的生命周期和可见性范围。例如,singleton作用域的Bean实例在整个应用程序中共享,因此它们的生命周期将与应用程序的生命周期相同。相反,每次请求时创建的prototype作用域的Bean实例的生命周期将短暂,并且它们的可见性仅限于该请求的范围内。
阅读全文