Start here. This is the direct spoken answer to practice first.
Overview
A longer-lived consumer needs a way to resolve the shorter-lived target at the time it is actually used.
If a prototype bean is injected directly into a singleton, Spring resolves that dependency while creating the singleton, so the singleton keeps that one prototype instance. To obtain a fresh prototype for each operation, inject an ObjectProvider, a narrow factory, or use supported method lookup. A request-scoped dependency is commonly represented by a scoped proxy that resolves the real target for the active request. Ordinary direct injection does not change lifetime on each method call.