Spring Сохранение данных: методы RepositoryEventHandler, не вызываемые
Я пытаюсь добавить RepositoryEventHandler, как описано в Spring Документация данных REST в репозиторий REST, показанный ниже:
@RepositoryRestResource(collectionResourceRel = "agents", path = "/agents")
public interface AgentRepository extends CrudRepository<Agent, Long> {
// no implementation required; Spring Data will create a concrete Repository
}
Я создал AgentEventHandler:
@Component
@RepositoryEventHandler(Agent.class)
public class AgentEventHandler {
/**
* Called before {@link Agent} is persisted
*
* @param agent
*/
@HandleBeforeSave
public void handleBeforeSave(Agent agent) {
System.out.println("Saving Agent " + agent.toString());
}
}
и объявила его в компоненте @Configuration:
@Configuration
public class RepositoryConfiguration {
/**
* Declare an instance of the {@link AgentEventHandler}
*
* @return
*/
@Bean
AgentEventHandler agentEvenHandler() {
return new AgentEventHandler();
}
}
Когда я отправляю POST на ресурс REST, Entity будет сохраняться, но метод handleBeforeSave никогда не будет вызван. Что мне не хватает?
Я использую: Spring Загрузка 1.1.5.RELEASE
Ответы
Ответ 1
Иногда очевидные ошибки остаются незамеченными.
POST - w760 > ресурс данных REST, выдает BeforeCreateEvent. Чтобы поймать это событие, метод handleBeforeSave должен быть аннотирован с помощью @HandleBeforeCreate вместо @HandleBeforeSave (последний вызывается при вызовах PUT и PATCH HTTP).
Тесты успешно пройдут в моем (очищенном) демо-приложении.
Ответ 2
Как выглядит ваш основной класс приложения? Импортирует RepositoryRestMvcConfiguration, как описано в https://spring.io/guides/gs/accessing-data-rest/?