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.