2009-07-17 47 views
3

如何测试Session范围是否在Spring中处于活动状态?例如,在启动时,某些类需要一个Session对象,它是Session的范围,比我返回一个模拟用户对象。测试Spring Scope是否有效

正在讨论的bean是使用aop:scoped-proxy声明的。 如何测试会话范围是否处于活动状态?

+1

如果您使用的是作用域代理,您为什么在意它是否处于活动状态?它会工作。 – skaffman 2009-07-17 14:06:06

回答

0

诀窍是创建一个工厂,从工厂获取aop范围的代理并运行任何需要实际对象存在的方法以及范围。

然后捕获一个BeanCreationException来检测非活动范围。

+0

只是一个警告:由于Spring的代理类通过允许Spring抛出一个BeanCreationException(使用4.2.4.RELEASE)来测试这种用法, – roded 2016-07-14 14:21:31

1

随着弹簧参考手册指出在第3章,会话范围:

作用域一个bean定义的HTTP会话的生命周期。只有在Web感知的Spring ApplicationContext的上下文中才有效。

你的代码,如果通过网络的Spring ApplicationContext(最有可能的XmlWebApplicationContext)时有用调用,将自动与不同的会话注射范围的Bean,因为它们是由不同的用户只要在适当的Spring配置设置调用注入这些会话范围的bean。然后,您的代码可以忽略它们来自哪里,并专注于使用会话作用域bean中的用户属性等,而不用担心实际注入的属性。

所以,我想真正的答案是,你不能测试这个 - 但你也不需要 - 如果有人要求你这样做,那么“他们做错了”。