Os eventos @RepositoryEventHandler param com @RepositoryRestController
Quando eu crio um@RepositoryRestController
para uma entidade, o associado@RepositoryEventHandler
métodos não são acionados no Spring Data REST via Spring Boot 1.4.0.M3 (também Spring Boot 1.3.5) - isso é um bug oucomo projetado?
eu tenho umAccount
entidade com um@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);
}
}
que disparam como deveriam quando POST:
curl -H "Content-Type: application/json" -X POST
-d '{"name":"aaa", "owner":{"email":"aaa@1010","password":"snap"}}'
http://localhost:8080/api/accounts
a menos que eu adicione um@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);
}
}
Quando eu comento o@RepositoryRestController
anotação, o@RepositoryEventHandler
métodos disparam, novamente.
Parece que eles devem se comportar de maneira independente, pois operam duas camadas conceituais diferentes no Spring Data REST - ou estou entendendo algo errado?
Se isso for intencional, é uma pena - vou ter que implementar todos os métodos HTTP para criar os eventos pessoalmente para qualquer entidade com um@RepositoryRestController
. Essa é realmente a intenção?