如何測試Session範圍是否在Spring中處於活動狀態?例如,在啓動時,某些類需要一個Session對象,它是Session的範圍,比我返回一個模擬用戶對象。測試Spring Scope是否有效
正在討論的bean是使用aop:scoped-proxy聲明的。 如何測試會話範圍是否處於活動狀態?
如何測試Session範圍是否在Spring中處於活動狀態?例如,在啓動時,某些類需要一個Session對象,它是Session的範圍,比我返回一個模擬用戶對象。測試Spring Scope是否有效
正在討論的bean是使用aop:scoped-proxy聲明的。 如何測試會話範圍是否處於活動狀態?
訣竅是創建一個工廠,從工廠獲取aop範圍的代理並運行任何需要實際對象存在的方法以及範圍。
然後捕獲一個BeanCreationException來檢測非活動範圍。
只是一個警告:由於Spring的代理類通過允許Spring拋出一個BeanCreationException(使用4.2.4.RELEASE)來測試這種用法, – roded 2016-07-14 14:21:31
隨着彈簧參考手冊指出在第3章,會話範圍:
作用域一個bean定義的HTTP會話的生命週期。只有在Web感知的Spring ApplicationContext的上下文中才有效。
你的代碼,如果通過網絡的Spring ApplicationContext(最有可能的XmlWebApplicationContext)時有用調用,將自動與不同的會話注射範圍的Bean,因爲它們是由不同的用戶只要在適當的Spring配置設置調用注入這些會話範圍的bean。然後,您的代碼可以忽略它們來自哪裏,並專注於使用會話作用域bean中的用戶屬性等,而不用擔心實際注入的屬性。
所以,我想真正的答案是,你不能測試這個 - 但你也不需要 - 如果有人要求你這樣做,那麼「他們做錯了」。
如果您使用的是作用域代理,您爲什麼在意它是否處於活動狀態?它會工作。 – skaffman 2009-07-17 14:06:06