`singleton` (domyślnie) oznacza jedną instancję beana na kontener Springa. `prototype` oznacza nową instancję przy każdym pobraniu; w aplikacjach web są też scope request/session.
Scope beana określa *ile instancji* tworzy Spring i *kiedy*.
Jeśli wstrzykniesz prototype do singletona, dostaniesz **jedną instancję** w momencie wstrzyknięcia. Jeśli potrzebujesz świeżej instancji „na użycie”, wstrzyknij providera.
@Component
@Scope("prototype")
class TraceId { /* ... */ }
@Service
class OrderService {
private final ObjectProvider<TraceId> traceId;
OrderService(ObjectProvider<TraceId> traceId) { this.traceId = traceId; }
void handle() {
TraceId id = traceId.getObject(); // świeża instancja
}
}