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?