1. Application Scope:

  • Lebensdauer: Gültig während der gesamten Laufzeit der Webanwendung.
  • Kontext: Die Bean wird einmal pro Servlet-Kontext erstellt, was bedeutet, dass es eine einzige Instanz der Bean für die gesamte Anwendung gibt.
  • Nutzung: Für globale Konfigurationsdaten oder shared Ressourcen, die von der gesamten Anwendung benötigt werden.
  • Web-Kontext spezifisch: Gilt nur für Webanwendungen und ist breiter gefasst als Singleton.

2. Singleton Scope:

  • Lebensdauer: Eine einzige Instanz wird für den gesamten Spring-Kontext erstellt und während der gesamten Laufzeit wiederverwendet.
  • Kontext: Standard-Bean-Scope in Spring. Es gilt auch für nicht-webbasierte Anwendungen.
  • Nutzung: Für Beans, die einmal initialisiert werden und mehrfach verwendet werden, wie z. B. Service- und DAO-Schichten.
  • Unterschied zu Application: Gilt sowohl für Web- als auch Nicht-Webanwendungen.

3. Prototype Scope:

  • Lebensdauer: Eine neue Bean-Instanz wird bei jeder Anfrage erstellt.
  • Kontext: Jede Abfrage (getBean) an den Spring-Kontext erstellt eine neue Instanz der Bean.
  • Nutzung: Für Beans, die kurzlebig sind und keine Wiederverwendung erfordern, wie z. B. Beans, die Benutzerdaten oder Transaktionen enthalten.
  • Unterschied zu Singleton: Hier gibt es keine Wiederverwendung der Bean; jede Anforderung erzeugt eine neue Instanz.

Zusammenfassung der Unterschiede:

ScopeLebensdauerAnwendungsbereichHauptunterschied
ApplicationWährend der gesamten Web-AppWeb-AnwendungenGilt für den gesamten Servlet-Kontext.
SingletonWährend der gesamten App-LaufzeitWeb- und Nicht-Web-AnwendungenStandard-Scope, gilt unabhängig von Web.
PrototypeNeue Instanz bei jeder AnfrageWeb- und Nicht-Web-AnwendungenKurzlebig, jede Anfrage erzeugt neue Instanz.

Wann sollte man welchen Scope verwenden?

  • Application Scope: Für zentrale Konfigurationen oder globale Ressourcen in Webanwendungen.
  • Singleton Scope: Für Services, die häufig verwendet werden und deren Zustand über die gesamte Anwendung gleich bleibt.
  • Prototype Scope: Für State-bezogene Beans oder solche, die nur kurzlebig verwendet werden.

Session Scope

Unterschiede zwischen @Scope und @SessionScope im Detail.
Aspekt@SessionScope@Scope
FokusSpeziell für den HTTP-Session-ScopeAllgemeine Annotation für verschiedene Scopes
VerwendbarkeitNur in Web-Anwendungen nutzbarIn allen Spring-Kontexten einsetzbar
DeklarationAutomatisch mit Proxy-Modus ScopedProxyMode.TARGET_CLASSMuss explizit konfiguriert werden
FlexibilitätEingeschränkt auf den Session-ScopeUnterstützt viele Scopes (Singleton, Request, Prototype etc.)
BoilerplateWeniger Code nötigZusätzliche Konfiguration nötig

Wann solltest du was verwenden?

  • Verwende @SessionScope:
    • Wenn du in einer Web-Anwendung arbeitest und eine Bean explizit im HTTP-Session-Scope benötigst.
    • Wenn du eine deklarative, einfache Lösung ohne zusätzliche Konfiguration bevorzugst.
  • Verwende @Scope:
    • Wenn du komplexere Anforderungen hast, z. B. andere Scopes (prototypesingletonrequest).
    • Wenn du über eine Web-Anwendung hinausgehende Kontexte abdeckst.

Fazit

  • @SessionScope ist eine spezielle, vereinfachte Annotation für den HTTP-Session-Scope, die vor allem in Web-Anwendungen eingesetzt wird.
  • @Scope ist allgemeiner und flexibler, erfordert aber zusätzliche Konfiguration, insbesondere bei Web-Scopes wie session.

0 Kommentare

Schreibe einen Kommentar

Avatar-Platzhalter

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Diese  Website nutzt Cookys. Wenn Du Sie nicht haben willst, klicke hier. Hier klicken um dich auszutragen.