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).

Тесты успешно пройдут в моем (очищенном) демо-приложении.