Как правильно настроить маппер?

В маппер хочу добавить метод, который получает инфу из репозитория, но не получается - т е например пытвюсь получить все комменты с комментрепозитория - выдает NPException. Подскажите что не так делаю?

введите сюда описание изображения


Ответы (1 шт):

Автор решения: petrovich
  1. Попробуйте для маппинга использовать MapStruct.
  2. Добавьте на класс CommentMapper аннотацию Component или Service (разницы между ними фактической никакой, только смысловая), спринг в этом случае подхватит инжект бинов с аннотацией Autowired.
  3. Field injection (как в вашем случае с репозиториями) является устаревшей практикой. Можно сделать несколькими способами:

    3.1 Создайте конструктор и в аргументах передавайте оба репозитория, в самом конструкторе присваивайте переданные в аргументах параметры полям класса. Начиная с версии спринга (не спринг бута) 4.3 можно не помечать конструктор с инъекциями зависимостей аннтотацией @Autowired (только если конструктор один) Здесь можно подробнее ознакомиться с этим нюансом

    3.2 Уберите с полей аннотации @Autowired, сделайте их private final и добавьте на класс аннотацию из lombok @RequiredArgsConstructor - вкупе со спрингом за вас все сделает эта аннотация.

  4. Оба репозитория должны быть спринг бинами (зависит от того какая у вас реализация используется - если spring data, то они должны расширять один из поставляющихся в библиотеке классов репозиториев).

З.Ы.: Если после всех манипуляций все равно репозитории null, то приложите, пожалуйста исходный код репозиториев (обоих), весь класс маппера (CommentMapper) и ошибку тоже приложите с полным стектрейсом

→ Ссылка