何时使用 Spring Prototype vs Request vs Session 范围?任何现实生活中的例子

Posted

技术标签:

【中文标题】何时使用 Spring Prototype vs Request vs Session 范围?任何现实生活中的例子【英文标题】:When to use Spring Prototype vs Request vs Session scope? Any real life example 【发布时间】:2020-05-12 13:59:10 【问题描述】:

我想知道什么时候应该在 Spring 中准确地使用 prototyperequestsession 范围?我知道如果请求 bean,singleton 返回相同的对象实例。

那我们为什么要考虑其他弹簧范围呢?

通过示例进行解释将有助于理解对它的需求。

【问题讨论】:

【参考方案1】:

下面是对 Spring bean 作用域的解释以及相关示例:

原型

What-> 它每次为每个请求提供不同的实例 当-> 你的 bean 包含一个你想要保持隔离的状态(即对象属性),并且你想确保它不会在下一个请求中被重用

请求

What-> 它每次为每个 HTTP 请求提供不同的实例,仅在 Web 应用程序的上下文中可用 When-> 你的 bean 对传入的实体(即 Product 对象)建模,你需要在该 Web 请求中捕获和处理它

会话

什么-> 它为每个 HTTP 会话提供不同的实例,仅在 Web 应用程序的上下文中可用 当-> 与特定用户关联的本地缓存时,例如 ShoppingBasket 或 UserSession,您通常将其称为有状态应用程序

【讨论】:

以上是关于何时使用 Spring Prototype vs Request vs Session 范围?任何现实生活中的例子的主要内容,如果未能解决你的问题,请参考以下文章

何时使用 Spring @Async vs Callable 控制器(异步控制器,servlet 3)

springbean的生命周期是啥?

spring cloud config server vs consul的区别?

4.spriing:Bean的生命周期/工厂方法配置Bean/FactoryBean

Spring Bean的生命周期

Spring学习Bean生命周期