0 Tage Serie
java / beginner
Snippet

Bean-Erstellungs-Scopes mit der Scope-Annotation verwalten

Standardmäßig sind Spring-Beans Singletons, was bedeutet, dass genau eine geteilte Instanz pro Container existiert. Die Kennzeichnung einer Klasse mit @Scope(SCOPE_PROTOTYPE) wendet das Prototyp-Muster an und weist Spring an, jedes Mal ein völlig neues, unabhängiges Objekt zu erstellen, wenn die Bean angefordert oder injiziert wird.

snippet.java
java
1
2
3
4
5
6
7
8
9
10
11
12
13
@Component
@Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE)
public class ShoppingCart {
private final List<String> items = new ArrayList<>();
public void addItem(String item) {
this.items.add(item);
}
public int getItemCount() {
return this.items.size();
}
}
spring
Erklärung
1
@Component
Registriert die Klasse ShoppingCart als vom Spring-Container verwaltete Bean-Komponente.
2
@Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE)
Ändert den Lebenszyklus von Singleton (Standard) zu Prototype (neue Instanz bei jeder Injizierung/Anforderung).
3
private final List<String> items = new ArrayList<>();
Hält den Zustand isoliert innerhalb jeder einzelnen Prototype-Bean-Instanz.
4
public void addItem(String item) {
Fügt Elemente hinzu, ohne andere ShoppingCart-Instanzen zu beeinflussen.