Spring Bean
一、 Spring Bean的概念
Spring Bean 是由 Spring IoC 容器管理的对象。
- Bean:在 Spring 中,任何被 Spring 容器创建、管理的对象都称为 Bean。
- IoC 容器:Spring 通过 IoC(控制反转) 机制管理 Bean 的生命周期,包括创建、依赖注入、初始化和销毁。
1.Bean 的特点
- 由容器管理:Bean 的创建、配置和依赖关系由 Spring 容器负责,而非手动通过 new 关键字创建。
- 依赖注入:Bean的依赖通过容器注入,无需在类内部硬编码依赖对象的创建逻辑。
- 生命周期管理:容器控制 Bean 的初始化、销毁等生命周期方法。
- 可配置:Bean 的属性、依赖关系和行为可通过 XML 配置、Java 注解或 Java 配置类定义。
2.Bean 的作用域
Spring 框架中的 Bean 作用域(Scope)定义了 Spring 容器如何创建和管理 Bean 实例。不同的作用域决定了 Bean 在应用中的生命周期和可见范围。
在Spring框架中,Bean的作用域(Scope)定义了Bean的生命周期和可见范围。Spring提供了多种作用域选项,以满足不同的应用场景需求。下面详细介绍这些作用域:
- 单例(Singleton):每个Spring IoC容器中只存在一个Bean实例,所有对该Bean的请求都会返回同一个实例。适合无状态的 Bean。
- 原型(Prototype): 每次请求Bean时都会创建一个新的实例。适合有状态的Bean(如包含用户会话数据的对象)。
- request ( Web 应用可用): 每个HTTP请求创建一个新的Bean实例,请求结束后销毁。
- 会话(Session, Web 应用可用):每个 HTTP 会话创建一个新的 Bean 实例,会话过期后销毁。
- 应用(Application, Web 应用可用): 每个ServletContext创建一个Bean实例,整个应用生命周期内共内共享。ServletContext 是 Servlet 容器(如 Tomcat)为每个部署的 Web 应用创建的全局对象,代表整个应用的上下文环境。每个 Web 应用在服务器中只有一个 ServletContext,因此该作用域的 Bean 也只有一个实例。
- WebSocket(Spring 5+, Web 应用可用): 每个WebSocket会话创建一个Bean实例。