测试Spring Scope是否处于活动状态

时间:2009-07-17 14:05:20

标签: spring session inversion-of-control scope

如何在Spring中测试Session范围是否处于活动状态?例如,在启动时,某些类需要一个User对象,它是Session scoped,而不是我返回一个模拟User对象。

使用aop:scoped-proxy声明有问题的bean。 如何测试会话范围是否有效?

2 个答案:

答案 0 :(得分:1)

正如第3章中的弹簧参考手册所述,会话范围:

  

将单个bean定义范围限定为HTTP会话的生命周期。仅在Web感知Spring ApplicationContext的上下文中有效。

如果通过支持Web的Spring ApplicationContext(很可能是XMLWebApplicationContext)调用您的代码,只要正确的弹簧配置设置为注入,就会自动注入不同的会话范围bean,因为它们由不同的用户调用这些会话范围豆。然后,您的代码可以忽略它们的来源并专注于使用会话作用域中的用户属性等,而不必担心实际注入该属性的内容。

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

答案 1 :(得分:0)

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

然后捕获BeanCreationException以检测非活动范围。