在Spring框架中,Bean的作用域定义了在容器中创建和管理Bean实例的方式。Spring框架支持多种不同的作用域,每种作用域适合不同的使用场景和需求。
以下是Spring框架中常见的Bean作用域:
- Singleton(单例):一个对象 默认
- 默认的作用域,容器中只存在一个Bean实例。每次请求该Bean时,都返回同一个实例。这是Spring容器中最常见的作用域。
- 示例配置:@Scope("singleton") 或者省略@Scope注解,因为默认即为单例。
- Prototype(原型):每次需要都来一个新的对象
- 每次请求时,容器都会创建一个新的Bean实例。即每次调用getBean()方法时,都会返回一个新的对象。
- 示例配置:@Scope("prototype")
- Request(请求):web项目中请求作用域 每次请求都会创建一个新的对象
- 每个HTTP请求都会创建一个新的Bean实例,仅在Web应用中有效。该作用域将Bean的生命周期限定于单个HTTP请求和响应周期内。
- 示例配置:@Scope(value = WebApplicationContext.SCOPE_REQUEST, proxyMode = ScopedProxyMode.TARGET_CLASS)
- Session(会话):每次会话都会创建一个新的对象
- 每个HTTP会话(即用户会话)创建一个新的Bean实例,仅在Web应用中有效。Bean的生命周期与用户会话周期相同。
- 示例配置:@Scope(value = WebApplicationContext.SCOPE_SESSION, proxyMode = ScopedProxyMode.TARGET_CLASS)
- Global Session:全局的