2015-12-10 5 views
2

У меня есть обработчик событий, который отлично работает в репозитории. Однако, как только я добавлю контроллер в микс и вызову метод репозитория напрямую, EventHandler, похоже, пропущен.SpringDataRest @RepositoryEventHandler не работает при добавлении контроллера

Неужели кто-нибудь столкнулся с этой проблемой? Если да, то что я могу сделать, чтобы запустить обработчик событий?

ответ

4

Итак, вы ожидаете, что ваш обработчик событий вызывается при использовании пользовательского контроллера. Я думаю, что это ожидание ложно. Обработчик событий вызывается только тогда, когда весенние данные остаются RepositoryEntityController. Это не слушатель событий сущности на уровне JPA.

Что вы можете сделать, это вызвать обработчик событий вручную. Весна-данные-отдых RepositoryEventHandler - это использование обычных событий весеннего приложения. Таким образом, ваш контроллер может реализовать ApplicationEventPublisherAware и опубликовать одно из событий приложения для отдыха с пружинными данными. Это все подклассы org.springframework.data.rest.core.event.RepositoryEvent

applicationEventPublisher.publishEvent(new AfterCreateEvent(myEntity)); 

spring documentation ВИДЕТЬ для деталей.

+1

Основываясь на доступной документации, я не думаю, что новый пользователь должен сделать это предположение, если их контроллер аннотируется с помощью '@ RepositoryRestController'. Это, в конце концов, называется '@ RepositoryEventHandler', а не' @ RepositoryControllerEventHandler' – Snekse

+0

@Snekse, что может быть так - я могу просто сказать вам, что это не так, - но я подробно рассказал о своем ответе на информацию о том, как вы могли все еще используют 'RepositoryEventHandler' в вашем настраиваемом контроллере. –

+0

Как сказал Матиас, вы можете публиковать свои собственные события. Убедитесь, что вы обрабатываете их все (До, После, Создать, Сохранить, Список, Удалить). Вот еще один хороший пример. http://stackoverflow.com/a/37616850/378151 В нашем проекте у нас есть MyEntityValidator, который мы вызываем из контроллера, а также обработчик события Repo. – Snekse

Смежные вопросы