0Pricing
Spring Boot 4 Microservices & REST APIs · Ders

Bean Kapsamları

Tekil, prototip, istek ve oturum kapsamlarını öğrenin.

Bean Kapsamları, CoddyKit'te ücretsiz bir Spring Boot 4 Microservices & REST APIs dersidir. Bu, 4 dersinin 3. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Spring Boot 4 Microservices & REST APIs öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Spring Boot 4 Microservices & REST APIs kursu toplamda 4 dersten oluşur.

Bu dersin bazı bölümleri henüz çevrilmemiş olup İngilizce olarak gösterilmektedir.

What a Scope Controls

A bean’s scope determines how many instances the container creates and how long each lives. The default and most common scope is singleton.

Choosing the right scope matters for state, memory, and thread safety.

Singleton Scope

With singleton scope, the container creates exactly one instance per ApplicationContext and returns it for every injection point. This is ideal for stateless services.

@Service // singleton by default
public class PricingService {
    public BigDecimal price(Order o) { /* stateless */ }
}

Singletons Must Be Thread-Safe

Because one singleton serves all concurrent requests, it must not hold mutable per-request state in fields. Keep singletons stateless, or guard shared state carefully.

  • Good: read-only config, injected collaborators
  • Bad: a mutable field updated per request

Prototype Scope

Prototype scope creates a new instance every time the bean is requested or injected. Use it for stateful, short-lived helpers that should not be shared.

@Component
@Scope("prototype")
public class ReportBuilder {
    private final List<String> rows = new ArrayList<>();
    public void addRow(String r) { rows.add(r); }
}

The Prototype-in-Singleton Trap

If you inject a prototype into a singleton via the constructor, you get one instance, captured once — not a fresh one per use. The singleton is built only once, so the prototype is resolved only once.

Getting Fresh Prototypes

To obtain a new prototype each time inside a singleton, inject an ObjectProvider (or a lookup) and call it on demand.

@Service
public class ReportService {
    private final ObjectProvider<ReportBuilder> builders;
    public ReportService(ObjectProvider<ReportBuilder> builders) {
        this.builders = builders;
    }
    public Report build() {
        ReportBuilder rb = builders.getObject(); // fresh each call
        return rb.toReport();
    }
}

Web Scopes Overview

In a web application, two extra scopes tie a bean’s lifetime to an HTTP interaction: request and session. They exist only while a request or session is active.

Request Scope

A request-scoped bean is created once per HTTP request and discarded when it completes. Useful for per-request context like a correlation id or accumulated request data.

@Component
@Scope(value = "request", proxyMode = ScopedProxyMode.TARGET_CLASS)
public class RequestContext {
    private String correlationId;
    // getters/setters
}

Session Scope

A session-scoped bean lives for the duration of a user’s HTTP session, holding per-user state across multiple requests, such as a shopping cart in a server-rendered app.

@Component
@Scope(value = "session", proxyMode = ScopedProxyMode.TARGET_CLASS)
public class UserCart {
    private final List<Item> items = new ArrayList<>();
}

Why Scoped Proxies

Injecting a short-lived scoped bean into a long-lived singleton needs a proxy. The proxy is injected once but delegates each call to the correct current-request or current-session instance.

That is why request/session beans use proxyMode = TARGET_CLASS.

Choosing a Scope

Guidelines:

  • singleton — default; stateless shared services
  • prototype — stateful, per-use helpers
  • request — per-HTTP-request context
  • session — per-user state across requests

Quick Check

Test your understanding of scopes.

Recap

Scope controls instance count and lifetime.

  • singleton (default) — one per context, keep stateless
  • prototype — new instance per request; beware the singleton trap
  • request/session — web scopes needing scoped proxies
  • Use ObjectProvider for fresh prototypes inside singletons

Sıkça Sorulan Sorular

“Bean Kapsamları” dersi ücretsiz mi?

Evet — “Bean Kapsamları” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Spring Boot 4 Microservices & REST APIs kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Spring Boot 4 Microservices & REST APIs kursu toplamda 4 dersten oluşur.

“Bean Kapsamları” dersinde ne öğreneceğim?

Tekil, prototip, istek ve oturum kapsamlarını öğrenin. Spring Boot 4 Microservices & REST APIs ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

Spring Boot 4 Microservices & REST APIs öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te Spring Boot 4 Microservices & REST APIs, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 3. dersidir.

“Bean Kapsamları” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu Spring Boot 4 Microservices & REST APIs dersinde kod yazıp çalıştırabilir miyim?

Evet. Her Spring Boot 4 Microservices & REST APIs dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. Spring IoC Container
  2. Yapıcı ve Alan Enjeksiyonu
  3. Bean Kapsamları
  4. Yaşam Döngüsü Geri Çağırmaları
← Spring Boot 4 Microservices & REST APIs Sayfasına Dön