【问题标题】:Disadvantages to giving Spring Controller Session scope.给 Spring Controller Session 范围的缺点。
【发布时间】:2019-01-11 21:50:49
【问题描述】:

我想要一些关于在 Spring MVC 中将 Session 范围赋予 Controller 的反馈。

@Controller
@RequestMapping("/feedback/Controller")
@Scope(value = WebApplicationContext.SCOPE_SESSION,
               proxyMode = ScopedProxyMode.TARGET_CLASS)
public class Feedback { ...

它允许我在控制器中轻松维护状态。我可以注入几个 bean,然后在整个会话中针对多个请求重用相同的 bean。来自不同会话的请求不会发生冲突。效果就像一个控制器范围。每个控制器在存储其所有 bean 实例的会话中都有自己的对象。

这可能有点矫枉过正,因为控制器中的大部分代码都不会维护状态。

【问题讨论】:

    标签: spring spring-mvc


    【解决方案1】:

    这不是矫枉过正,而是一种非常糟糕的做法。它可能有效并不意味着您应该那样做。

    我们可以先回答几个问题。

    为什么需要在 bean 内部维护状态?它比 HttpSession 有什么好处?

    如果您使用 Sessions 应对 bean,您认为它存储在哪里?是的,它在 HttpSession 中!

    您不仅将状态存储到 HttpSession,还存储了 Bean。

    缺点? 它引入了不必要的开销,并使您的会话序列化和反序列化更加复杂。考虑到您将向外扩展以拥有更多应用服务器...

    我将始终避免使用会话范围 bean。

    【讨论】:

    • 我有一个被两个控制器使用的 bean。使用 bean 的会话范围,两个控制器共享数据。我要求每个控制器都有自己的 bean 数据。
    猜你喜欢
    • 2017-11-08
    • 1970-01-01
    • 1970-01-01
    • 2011-11-27
    • 2012-06-23
    • 2017-07-08
    • 2011-11-03
    • 2017-05-13
    • 2016-10-04
    相关资源
    最近更新 更多