2009-07-17 7 views
3

SessionスコープがSpringでアクティブであるかどうかをテストするにはどうすればよいですか?たとえば、起動時に、セッションスコープのUserオブジェクトが必要なクラスもあります。私はUserオブジェクトを返します。Springスコープがアクティブであるかどうかのテスト

問題のBeanはaop:scoped-proxyで宣言されています。 セッションスコープがアクティブかどうかをテストするにはどうすればよいですか?第3章のばねリファレンスマニュアル状態として

+1

スコープ付きプロキシを使用している場合、アクティブであるかどうかはどうして気になりますか?それはうまくいくでしょう。 – skaffman

答えて

0

このトリックは、工場を作成し、工場からオープスコープのプロキシを取得し、そこに実際のオブジェクトとスコープが必要なメソッドを実行することでした。

次に、BeanCreationExceptionをキャッチして、非アクティブスコープを検出します。

+0

ちょうど警告:私は、Springが4.2.4.RELEASEを使用してBeanCreationExceptionをスローすることを許可することによるテストのそのような使用法で、Springのプロキシクラスのためにかなりのパフォーマンスが低下しているのを見ています。 – roded

1

、セッションスコープ:

は、HTTPセッションのライフサイクルに単一のビーン定義をスコープ。 Web対応Spring ApplicationContextのコンテキストでのみ有効です。

あなたのコードは、Web対応の春のApplicationContext(最も可能性が高いXMLWebApplicationContext)を介して呼び出された場合、自動的に別のセッションを注入されます彼らは限り適切なスプリング設定が設定されているとして、異なるユーザーによって呼び出されると豆をスコープこれらのセッションスコープBeanを注入します。そして、あなたのコードはどこから来たのかを無視し、実際に何がプロパティを注入したか心配することなく、セッションスコープのBeanにあるユーザー属性などを使うことに集中することができます。

本当の答えは、あなたがこれをテストすることはできませんが、あなたがする必要があることだと思います。

関連する問題