Определение Spring‑бинов для модели склада и сотрудников

Warehouse и Worker можно сделать Spring-бинами, если это сервисы единого склада; Product обычно остаётся обычной моделью данных. Обратную ссылку Worker → Warehouse внедрять необязательно.

Короткий ответ

Что ответить на собеседовании

Warehouse и Worker можно сделать Spring-бинами, если это сервисы единого склада; Product обычно остаётся обычной моделью данных. Обратную ссылку Worker → Warehouse внедрять необязательно.

Подробный разбор

Ответ с пояснениями

Условие

Имеются три сущности: Warehouse, Worker и Product. Worker отвечает за добавление Product в Warehouse. Внутри Warehouse реализован метод addProduct(), который делегирует вызов своему Worker. После выполнения Worker помещает объект Product в внутренний список товаров склада.

Требуется с помощью Spring Framework описать следующее:

  1. Классы‑модели: Warehouse, Worker, Product.
  2. Логику их взаимодействия при операции добавления продукта.
  3. Указать, какие из этих классов следует оформить как Spring‑бины (например, с аннотациями @Component, @Service, @Repository и т.п.).

Ответ

Warehouse и Worker можно сделать Spring-бинами, если это сервисы единого склада; Product обычно остаётся обычной моделью данных. Обратную ссылку Worker → Warehouse внедрять необязательно.

@Component
class Warehouse {
    private final Worker worker;
    private final List<Product> products = new ArrayList<>();
    Warehouse(Worker worker) { this.worker = worker; }
    public synchronized void addProduct(Product product) {
        worker.add(product, products);
    }
}

@Service
class Worker {
    public void add(Product product, List<Product> products) {
        products.add(Objects.requireNonNull(product));
    }
}

record Product(String name) {}

Показана учебная модель хранения в памяти; Spring/JDK imports опущены. Циклического DI нет. Для нескольких складов Warehouse лучше сделать отдельной доменной сущностью, а операции вынести в stateless-сервис с репозиторием; singleton-список не заменяет БД.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее