În mod implicit, toate componentele gestionate de containerul Spring sunt Singleton: se creează o singură instanță per ApplicationContext, partajată de toate componentele care o injectează. Această abordare maximizează performanța și reduce consumul de memorie JVM.
Adnotarea @Scope permite modificarea acestei strategii pentru clasele care mențin stare specifică unui utilizator sau unei acțiuni particulare:
singleton(implicit): o singură instanță globală per container.prototype: se instanțiază un nou obiect de fiecare dată când bean-ul este solicitat din context.request: se instanțiază un obiect unic per cerere HTTP (în aplicațiile Spring Web).session: o instanță unică pe durata sesiunii HTTP a utilizatorului.
Exemplu: Definirea unui bean cu scope Prototype și Request
package ro.dexblog.demo.model;
import org.springframework.beans.factory.config.ConfigurableBeanFactory;
import org.springframework.context.annotation.Scope;
import org.springframework.context.annotation.ScopedProxyMode;
import org.springframework.stereotype.Component;
import org.springframework.web.context.WebApplicationContext;
@Component
@Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE)
public class HeavyReportTask {
private final long createdAt = System.currentTimeMillis();
public void run() {
System.out.println("Execuție task izolat inițializat la: " + createdAt);
}
}
@Component
@Scope(value = WebApplicationContext.SCOPE_REQUEST, proxyMode = ScopedProxyMode.TARGET_CLASS)
public class UserRequestContext {
private String traceId;
public String getTraceId() { return traceId; }
public void setTraceId(String traceId) { this.traceId = traceId; }
}
Întrebări & Exemple de Cod:
Adnotarea @Scope în Spring BootAi o nelămurire despre utilizarea comenzii
Adnotarea @Scope în Spring Bootsau ai descoperit un truc / fragment de cod util? Distribuie-l cu ceilalți programatori!Fii primul care pune o întrebare sau distribuie un fragment de cod / prompt!
Nu au fost adăugate încă întrebări sau exemple de cod pentru această pagină. Dacă ai întâlnit o problemă sau ai un snippet util, adaugă-l mai jos pentru a-i ajuta pe ceilalți.