I've got a @RepositoryEventHandler
set up and it is not being invoked for some unknown reason.
@Component
@RepositoryEventHandler(User.class)
public class UserEventHandler {
@Autowired
private PasswordCrypto passwordCrypto;
@HandleBeforeSave
public void handleUserSave(User user) {
if (user.getPassword() != null && !"".equals(user.getPassword())) {
user.setPassword(passwordCrypto.encrypt(user.getPassword()));
}
}
@HandleBeforeCreate
public void handleUserCreate(User user) {
user.setPassword(passwordCrypto.encrypt(user.getPassword()));
}
}
The Repository:
public interface UserRepository extends CrudRepository<User, Long> {
Optional<User> findOneByUsername(String username);
}
And my main class:
@SpringBootApplication
@EntityScan("de.ihrig.feuerwehr.hydranet.model")
@EnableJpaRepositories
@ComponentScan({
"somepath",
"somepath including the UserEventHandler"
})
public class ServerApplication {
public static void main(String[] args) {
SpringApplication.run(ServerApplication.class, args);
}
}
Thanks for your help in advance, I just cannot find the error.
There could be a couple of things going on.
You're repo isn't annotated w/ @RestResource
, but I'm guess that was just an oversight.
I'm guessing the comments are correct and you're testing this through a unit test with an entry point that is not going through the REST API. The handlers
only capture Repo events that are coming through that vector.
If you want to capture any repo event, regardless of entry point, then you want to use a AbstractRepositoryEventListener
The Spring Data Rest Events documentation covers this. Also see listening for repository events in spring boot.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With