我们如何从Spring会话范围的bean中获取bean对象?

时间:2014-07-06 08:07:14

标签: spring spring-mvc

我试图从spring session scoped bean中获取bean。据我所知,基于会话范围实例化的Bean通过HTTP会话生效。那么如何从Http Session中获取这个bean对象。

2 个答案:

答案 0 :(得分:3)

您无法从Session对象本身获取作用域bean,您只需从Spring上下文中获取它,就像获取任何其他bean一样(例如使用BeanFactory#getBean)。 Spring将负责上下文和会话之间的同步。

虽然Spring会将bean引用存储在Session对象中,而这是一个内部实现细节,但你不应该自己在那里翻找。这可能会在不同的Spring版本中发生变化,并且没有记录存储bean的会话属性键。

答案 1 :(得分:2)

您可以访问ApplicationContext并从那里检索bean。

    ApplicationContext context = RequestContextUtils.getWebApplicationContext(request);
    SessionInfo info = context.getBean("SessionInfo");-->Whatever bean you want