복붙노트

[SPRING] Spring 데이터 Rest : RepositoryEventHandler 메소드가 호출되지 않았습니다.

SPRING

Spring 데이터 Rest : RepositoryEventHandler 메소드가 호출되지 않았습니다.

아래에 표시된 REST 저장소에 스프링 데이터 REST 문서에 설명 된대로 RepositoryEventHandler를 추가하려고합니다.

@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();
    }
}

REST 리소스에 POST 할 때 엔티티가 지속되지만 handleBeforeSave 메소드는 호출되지 않습니다. 내가 뭘 놓치고 있니?

나는 사용하고있다 : Spring Boot 1.1.5.RELEASE

해결법

  1. ==============================

    1.때때로 명백한 실수가 눈에 띄지 않게됩니다.

    때때로 명백한 실수가 눈에 띄지 않게됩니다.

    Spring 데이터 REST 리소스를 POST하면 BeforeCreateEvent가 발생한다. 이 이벤트를 잡으려면 handleBeforeSave 메소드가 @HandleBeforeSave 대신 @HandleBeforeCreate로 주석되어야합니다 (후자는 PUT 및 PATCH HTTP 호출에서 호출됩니다).

    시험은 지금 내 (정리 된) 데모 앱에 성공적으로 통과합니다.

  2. ==============================

    2.주요 응용 프로그램 클래스는 어떻게 생겼습니까? https://spring.io/guides/gs/accessing-data-rest/에서 설명한대로 RepositoryRestMvcConfiguration을 가져 옵니까?

    주요 응용 프로그램 클래스는 어떻게 생겼습니까? https://spring.io/guides/gs/accessing-data-rest/에서 설명한대로 RepositoryRestMvcConfiguration을 가져 옵니까?

  3. from https://stackoverflow.com/questions/25510530/spring-data-rest-repositoryeventhandler-methods-not-invoked by cc-by-sa and MIT license