2009-07-17 48 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中的用戶屬性等,而不用擔心實際注入的屬性。

所以,我想真正的答案是,你不能測試這個 - 但你也不需要 - 如果有人要求你這樣做,那麼「他們做錯了」。