【发布时间】:2014-08-26 22:48:48
【问题描述】:
我正在尝试从春季会话范围的 bean 中获取 bean。据我所知,基于会话范围实例化的 Bean 通过 HTTP 会话存在。那么如何从 Http Session 中获取这个 bean 对象。
【问题讨论】:
-
只需像往常一样将其从容器中拉出,Spring 将确保每个会话都有一个共享实例。 .
标签: spring spring-mvc
我正在尝试从春季会话范围的 bean 中获取 bean。据我所知,基于会话范围实例化的 Bean 通过 HTTP 会话存在。那么如何从 Http Session 中获取这个 bean 对象。
【问题讨论】:
标签: spring spring-mvc
您不会从 Session 对象本身获取作用域 bean,您只需像获取任何其他 bean 一样从 Spring 上下文中获取它(例如,使用 BeanFactory#getBean)。 Spring 将负责上下文和会话之间的同步。
虽然 Spring 确实会将 bean 引用存储在 Session 对象中,但这是一个内部实现细节,您不应该自己在其中翻找。这可能会在不同的 Spring 版本之间发生变化,并且没有记录存储 bean 的会话属性键。
【讨论】:
您可以访问 ApplicationContext 并从那里检索 bean。
ApplicationContext context = RequestContextUtils.getWebApplicationContext(request);
SessionInfo info = context.getBean("SessionInfo");-->Whatever bean you want
【讨论】: