当前位置: 首页 > 知识库问答 >
问题:

Spring5中删除了GlobalSession作用域bean吗?为什么?

蒋硕
2023-03-14

Spring 4:https://docs.Spring.io/autorepo/docs/Spring/4.2.4.release/javadoc-api/org/springframework/web/context/request/requestattributes.html#scope_global_session

Spring 5:https://docs.Spring.io/autorepo/docs/Spring/current/javadoc-api/org/springframework/web/context/request/requestattributes.html#scope_global_session

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

更新:

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

共有1个答案

堵茂勋
2023-03-14

是的。scope_global_session用于跨portlet和servlet共享会话。SPR-14129的Spring 5中删除了支持的Portlet,原因是:

Spring的Portlet MVC支持在最近几年变成了第二类特性,从未更新到Servlet MVC现在所基于的现代handlermethod基础结构(从3.1开始,旧的Servlet MVC变体从3.2开始就不推荐了)。此外,Portlet3.0规范打算引入注释驱动的调度本身,因此Spring Portlet MVC也没有战略地位,即使在目前的利基领域也是如此。最后但并非最不重要的一点是,常见的Portlet环境似乎在Spring3.x上被困住了,甚至还没有升级到Spring4.x。

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

 类似资料:
  • 我有一个CDI bean,定义如下: 现在,我想以编程方式将其从会话范围中删除: 但是变量始终为空。如何检索实例并销毁它?

  • 为什么已经从PHP中删除了,还有其他原因吗?

  • 来自Spring 5文档 当@bean方法在未使用@configuration注释的类中声明时,它们被称为以'lite'模式处理。在@组件中,甚至在普通的旧类中声明的Bean方法将被视为“lite”,包含类的主要目的不同,而@Bean方法只是一种额外的好处。例如,服务组件可能通过每个适用的组件类上的附加@bean方法向容器公开管理视图。在这样的场景中,@bean方法是一种简单的通用工厂方法机制。

  • 主要内容:singleton,prototype默认情况下,所有的 Spring Bean 都是单例的,也就是说在整个 Spring 应用中, Bean 的实例只有一个。 我们可以在 <bean> 元素中添加 scope 属性来配置 Spring Bean 的作用范围。例如,如果每次获取 Bean 时,都需要一个新的 Bean 实例,那么应该将 Bean 的 scope 属性定义为 prototype,如果 Spring 需要每次都返回一个相同

  • hdel key field 删除指定的hash field

  • Spring文档——根据经验,所有有状态bean都应该使用原型范围,而无状态bean应该使用单例范围。 因此,当您必须跨上下文一致地维护一些状态/数据时,有状态bean是必要的。说银行应用程序。您希望您的对象在各种操作(存款、取款等)中保持同步。 因此,在单例范围内,您会得到同样的事情——跨上下文的对象一致性。 那么,为什么javadoc会声明Opposite呢? 帮助!!:)