Nou Generator de prompt AI — scrie prompturi mai bune pentru ChatGPT, Claude și Gemini →

Adnotarea @Scope în Spring Boot în Spring Boot

core Spring Boot 3.x / Java 17+ Q&A / Distribuie cod

Explicație detaliată a ciclului de viață și domeniului de aplicare al bean-urilor Spring: Singleton, Prototype, Request, Session și Application.

Sintaxă
@Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE)

Î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; }
}

Comunitate & Schimb de cunoștințe

Întrebări & Exemple de Cod: Adnotarea @Scope în Spring Boot

Ai o nelămurire despre utilizarea comenzii Adnotarea @Scope în Spring Boot sau 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.

Comunitate Adaugă o întrebare sau distribuie un cod

Moderare & Siguranță:

Pentru a menține calitatea și securitatea informațiilor, fiecare întrebare sau fragment de cod/prompt este analizat (manual sau prin moderare asistată de AI) înainte de publicare.