Spring Data 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();
}
}
RESTリソースにPOSTしているとき、エンティティは永続化されますが、メソッドhandleBeforeSaveは呼び出されません。何が欠けていますか?
私が使用しているもの:Spring Boot 1.1.5.RELEASE
明らかな間違いが見過ごされることがあります。
[〜#〜] post [〜#〜]-Spring Data RESTリソース、-を放出します BeforeCreateEvent 。このイベントをキャッチするには、メソッドhandleBeforeSaveに@HandleBeforeSaveではなく@HandleBeforeCreateアノテーションを付ける必要があります(後者はPUTおよびPATCH HTTP呼び出しで呼び出されます)。
私の(クリーンアップされた) デモアプリ でテストに合格しました。
メインのApplicationクラスはどのように見えますか? https://spring.io/guides/gs/accessing-data-rest/ で説明されているように、RepositoryRestMvcConfigurationをインポートしますか?