2009-07-17 10 views
3

Wie kann ich testen, ob der Session-Bereich im Frühling aktiv ist? Zum Beispiel benötigen einige Klassen beim Start ein Benutzerobjekt, das Sitzungsbereich ist, und dann gebe ich ein Pseudo-Benutzerobjekt zurück.Test, ob Spring Scope aktiv ist

Die betreffende Bean wird mit aop: scoped-proxy deklariert. Wie kann ich testen, ob der Sitzungsumfang aktiv ist?

+1

Wenn Sie Scoped-Proxies verwenden, warum interessiert es Sie, ob es aktiv ist oder nicht? Es wird einfach funktionieren. – skaffman

Antwort

0

Der Trick bestand darin, eine Factory zu erstellen, einen opto-scoped Proxy von der Fabrik zu erhalten und irgendeine Methode auszuführen, die das tatsächliche Objekt benötigt, um dort zu sein, und den Bereich auch.

dann fangen Sie eine BeanCreationException ab, um den inaktiven Bereich zu erkennen.

+0

Nur eine Warnung: Ich sehe einen beträchtlichen Leistungseinbruch aufgrund der Proxy-Klassen von Spring bei einer solchen Testbenutzung, da Spring eine BeanCreationException auslösen kann (unter Verwendung von 4.2.4.RELEASE). – roded

1

Da die Federreferenzhandbuch Zustände in Kapitel 3, Sitzungsbereich:

Scopes eine einzelne Bohne Definition des Lebenszyklus eines HTTP-Session. Nur gültig im Kontext eines webfähigen Spring ApplicationContext.

Ihr Code, wenn über einen Web-aware Frühling Application aufgerufen (höchstwahrscheinlich ein XMLWebApplicationContext), wird automatisch mit anderer Sitzung injiziert werden scoped Bohnen, wie sie von verschiedenen Benutzern aufgerufen werden, solange die richtige Federkonfiguration eingestellt ist um diese Session-Bean zu injizieren. Dann kann Ihr Code ignorieren, woher er kam, und sich darauf konzentrieren, die Benutzerattribute usw. zu verwenden, die in der sitzungsbezogenen Bean gefunden wurden - ohne sich darum zu kümmern, was die Eigenschaft tatsächlich injiziert hat.

Also die richtige Antwort ist, dass Sie das nicht testen können - aber Sie müssen es auch nicht - wenn jemand Sie dazu auffordert, dann "machen sie es falsch".

Verwandte Themen