When I create a @RepositoryRestController for an entity, the associated @RepositoryEventHandler methods are not triggered in Spring Data REST via Spring Boot 1.4.0.M3 (also Spring Boot 1.3.5) -- is this a bug, or as designed?
I have an Account entity with an @RepositoryEventHandler:
@Slf4j @Component @RepositoryEventHandler(Account.class) public class AccountEventBridge { @HandleBeforeCreate public void handleBeforeCreate(Account account){ log.info("Before create " + account); } @HandleAfterCreate public void handleAfterCreate(Account account){ log.info("Created " + account); } } which trigger as they should when I POST:
curl -H "Content-Type: application/json" -X POST -d '{"name":"aaa", "owner":{"email":"aaa@1010","password":"snap"}}' http://localhost:8080/api/accounts unless I add a @RepositoryRestController:
@RepositoryRestController public class AccountRespositoryRestController { private final AccountRepository repository; @Autowired public AccountRespositoryRestController(AccountRepository repository) { this.repository = repository; } @RequestMapping(method = RequestMethod.POST,value = "/accounts") public @ResponseBody PersistentEntityResource post( @RequestBody Account account, PersistentEntityResourceAssembler assembler) { // ... Account entity = this.repository.save(account); return assembler.toResource(entity); } } When I comment out the @RepositoryRestController annotation, the @RepositoryEventHandler methods trigger, again.
It seems like these should behave independently since they operate a two different conceptual layers within Spring Data REST -- or am I misunderstanding something?
If this is intentional, it's unfortunate -- I'll have to implement all HTTP methods to create the events myself for any entity with an @RepositoryRestController. Is that really the intent?