Spring Bean 的作用域之间有什么区别?
Spring 51
Spring 容器中的 bean 可以分为 5 个范围。所有范围的名称都是自说明的,但是为了避免混淆,还是让我们来解释一下:
1. singleton:这种 bean 范围是默认的,这种范围确保不管接受到多少个请求,每个容器中只有一个 bean 的实例,单例的模 式由 bean factory 自身来维护。
2. prototype:原形范围与单例范围相反,为每一个 bean 请求 提供一个实例。
3. request:在请求 bean 范围内会每一个来自客户端的网络请 求创建一个实例,在请求完成以后,bean 会失效并被垃圾回收器回收。
4. Session:与请求范围类似,确保每个 session 中有一个 bean 的实例,在 session 过期后,bean 会随之失效。
5. global-session:global-session 和 Portlet 应用相关。当你 的应用部署在 Portlet 容器中工作时,它包含很多 portlet。如 果你想要声明让所有的 portlet 共用全局的存储变量的话,那 么这全局变量需要存储在 global-session 中。
全局作用域与 Servlet 中的 session 作用域效果相同。
更多内容请参考 : Spring Bean Scopes。