Không. Dependency được resolve một lần lúc singleton khởi tạo: Spring tạo đúng một instance prototype, tiêm vào, và singleton dùng lại instance đó suốt vòng đời. Đây là bẫy hay được hỏi vì code nhìn qua tưởng đúng.
Muốn lấy instance mới mỗi lần thì phải hỏi container tại thời điểm dùng:
java
@Service
public class ReportService {
private final ObjectProvider<ReportContext> contextProvider;
public ReportService(ObjectProvider<ReportContext> contextProvider) {
this.contextProvider = contextProvider;
}
public Report build() {
ReportContext ctx = contextProvider.getObject(); // new instance per call
return ctx.render();
}
}Các cách khác cùng ý tưởng: ObjectFactory<T>, jakarta.inject.Provider<T>, hoặc method injection với @Lookup trên một method abstract.
Lưu ý kèm theo: Spring không quản lý trọn vòng đời của prototype bean — callback khởi tạo vẫn chạy nhưng callback hủy thì không. Nếu prototype giữ tài nguyên (file handle, connection), code gọi phải tự đóng.