Bean 的作用域有哪些
Bean 的作用域有哪些
程序员朱永胜有的时候博客内容会有变动,首发博客是最新的,其他博客地址可能会未同步, 认准
https://blog.zysicyj.top
全网最细面试题手册,支持艾宾浩斯记忆法。这是一份最全面、最详细、最高质量的 java 面试题,不建议你死记硬背,只要每天复习一遍,有个大概印象就行了。https://store.amazingmemo.com/chapterDetail/1685324709017001`
Bean 的作用域 (Scope)
在 Spring 框架中,当定义一个 Bean 时,你需要定义该 Bean 的作用域。以下是 Spring 支持的几种作用域类型:
单例 (Singleton)
单例作用域 是 Spring 的默认作用域。如果一个 Bean 的定义为单例作用域,那么 Spring IoC 容器每次被请求时都会返回相同的 Bean 实例。
1 | - 当前容器中只会存在一个共享的 Bean 实例 |
原型 (Prototype)
原型作用域 配置后,每次请求 Bean 时都会创建一个新实例。
1 | - 每次请求都会创建一个新的 Bean 实例 |
请求 (Request)
请求作用域 针对每一次 HTTP 请求,都会产生一个新的 Bean,仅在当前 HTTP request 内有效。
1 | - 该作用域仅在 Web 程序中适用,对于每个 HTTP 请求都会创建一个新的 Bean |
会话 (Session)
会话作用域 下的 Bean 以特定于用户的 HTTP Session 为生命周期。与 “ 请求 “ 作用域不同,同一个 HTTP Session 共享同一个 Bean 实例。
1 | - 限定在 HTTP Session 范围内的 Bean |
全局会话 (Global-Session)
全局会话作用域 主要用于 Portlet 应用环境,如果你在 Portlet 容器中使用 Spring,Bean 定义为全局会话作用域,那么该 Bean 的生命周期将限定在全局 Portlet Session 中。
1 | - 该作用域仅适用于 Portlet 环境 |
总结一下,Bean 的作用域决定了 Bean 的生命周期,以及如何共享。正确选择适合的作用域,将有助于优化 Spring 应用程序的性能和管理。