Spring Bean 的作用域之间有什么区别?

2019-12-05   76 次阅读


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

Q.E.D.

知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议

如人饮水、冷暖自知