Вступить в клуб →
лёгкаявопросSpring Boot и REST API

Изменяемое поле в @Service: сколько экземпляров бина в приложении

В сервисе отчётов накапливают строки прямо в поле бина:

@Service
public class ReportService {
    private final List<String> rows = new ArrayList<>();

    public void addRow(String row) { rows.add(row); }

    public List<String> build() { return rows; }
}

Сервис вызывается из REST-контроллера. Что верно про поведение этого кода под нагрузкой?

  • Spring создаёт новый экземпляр бина на каждый HTTP-запрос, поэтому строки не пересекаются
  • Бин по умолчанию один на всё приложение: список общий для всех запросов и потоков, в отчёты попадут чужие строки
  • Spring создаёт по экземпляру на поток обработки запроса, поэтому проблема возможна только при @Async
  • Spring сам синхронизирует доступ к полям бина, поэтому данные будут корректны, просто медленнее

🔒 Проверка ответа — для участников клуба

  • Проверка ответа
  • Подсказка, если застряли
  • Разбор с объяснением, почему так
  • Прогресс по всем задачам и виртуальные собеседования
Зарегистрироваться →

Регистрация занимает минуту

Другие задачи раздела