
In Spring Boot kannst du folgende Scopes einsetzen:
- singleton: Dies ist der Standard-Scope in Spring. Jede Anfrage an ein Singleton-Bean liefert dieselbe Instanz, die beim ersten Zugriff auf das Bean erstellt wird.
- prototype: Jede Anfrage an ein Prototype-Bean erzeugt eine neue Instanz des Beans.
- request: Dieser Scope ist für Beans gedacht, die für eine einzige HTTP-Anfrage gültig sind. Jede Anfrage erhält eine eigene Instanz des Beans.
- session: Dieser Scope ist für Beans gedacht, die für eine HTTP-Session gültig sind. Jede Session erhält eine eigene Instanz des Beans.
- globalSession: Dieser Scope ist für Beans gedacht, die für eine globale HTTP-Session gültig sind. Diese Instanz des Beans ist über mehrere Anwendungen hinweg gültig.
Jeder dieser Scopes bestimmt, wie oft und wann eine neue Instanz eines Beans erzeugt wird. Die Wahl des richtigen Scopes hängt von den Anforderungen der Anwendung und den spezifischen Beans ab.
Du kannst Scopes Klassen in Spring Boot auf verschiedene Arten zuweisen:
- Über die Bean-Definition: Scopes können direkt unterhalp der Bean-Definition angegeben werden, indem die Annotation @Scope“ verwendet wird.
Beispiel:
@Bean @Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE) public MyBean myBean() { return new MyBean(); }
- Über die Klassenannotation: Eine Klasse kann mit einer Klassenannotation wie @Component, @Service oder @Controller versehen werden, um anzugeben, dass es sich um ein Bean handelt. Standardmäßig ist der Scope für diese Klassen „singleton“. Wenn Sie jedoch einen anderen Scope benötigen, können Sie die Annotation @Scope verwenden, um diesen Scope für das Bean anzugeben.
Beispiel:
@Service
@Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE)
public class MyService {
// ...
}
- Über eine benutzerdefinierte Konfiguration: Scopes können auch über eine benutzerdefinierte Konfigurationsklasse definiert werden, indem Sie die Klasse mit der Annotation @Configuration annotieren und die Bean-Definitionen in der Konfigurationsklasse definieren.
Beispiel:
@Configuration
public class MyConfig {
@Bean
@Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE)
public MyBean myBean() {
return new MyBean();
}
}
Jeder dieser Ansätze ist geeignet, um einer Bean einen bestimmten Scope zuzuweisen. Die Wahl des richtigen Ansatzes hängen von den Anforderungen der Anwendung und der Bean Verwendung ab.
0 Kommentare