首页 > 解决方案 > 是否从 Spring 5 中删除了 GlobalSession 范围的 bean?为什么?

问题描述

1. 是否从 Spring 5 中删除了全局会话范围的 bean?

官方文档不再提及。SCOPE_GLOBAL_SESSION 不再是 RequestAttributes 的一部分:

春天 4:https ://docs.spring.io/autorepo/docs/spring/4.2.4.RELEASE/javadoc-api/org/springframework/web/context/request/RequestAttributes.html#SCOPE_GLOBAL_SESSION

春天 5:https ://docs.spring.io/autorepo/docs/spring/current/javadoc-api/org/springframework/web/context/request/RequestAttributes.html#SCOPE_GLOBAL_SESSION

2. 如果 1 为真:为什么要删除它们?


更新:

找到了一个删除这些东西的提交。似乎是因为 Portlet 的丢失:请参阅提交:https ://github.com/spring-projects/spring-framework/commit/2b3445df8134e2b0c4e4a4c4136cbaf9d58b7fc4#diff-42e7410c98a33ab499e5c27858b1c985

标签: javaspringspring-boot

解决方案


是的。这SCOPE_GLOBAL_SESSION是为了在 Portlet 和 Servlet 之间共享会话。并且支持的 Portlet 在 Spring 5 中的SPR-14129中被删除,因为:

Spring 的 Portlet MVC 支持近年来变成了第二类特性,从未更新到如今 HandlerMethodServlet MVC 所基于的现代基础设施(自 3.1 以来,旧的 Servlet MVC 变体自 3.2 以来已弃用)。此外,Portlet 3.0 规范打算引入注释驱动的调度本身,因此 Spring Portlet MVC 也没有战略地位,即使在其当前的利基市场中也是如此。最后但同样重要的是,常见的 Portlet 环境似乎卡在 Spring 3.x 上,甚至还没有升级到 Spring 4.x。

因此,从 Spring 5 开始,我们将完全放弃对 Portlet MVC 的支持,同时引入我们的 Reactive MVC 变体。我们打算继续支持(但不推荐)在 Portlet 环境中使用 Spring 和 JSF,特别是通过 Spring Web Flow。对于所有其他目的,Spring Framework 4.3.x 将一直支持到 2020 年,包括其 Portlet MVC 支持(以及底层 Servlet 2.5 支持)。


推荐阅读