我设置了一个@RepositoryEventHandler
,并且由于某些未知原因未被调用。Spring Boot @RepositoryEventHandler未被调用
@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()));
}
}
资源库:
public interface UserRepository extends CrudRepository<User, Long> {
Optional<User> findOneByUsername(String username);
}
我的主类:
@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);
}
}
感谢您的帮助提前,我只是找不到错误。
请你能说清楚你的意思是不工作?你怎么调用你的休息服务?同样的设置对我很有用,我相信这个问题可能在于你如何断定它不工作。 – ArunM
好吧,我想我误解了@RepositoryEventHandler的概念。它在对Data-REST公开的存储库完成的HTTP请求上调用,但不是在以编程方式使用任何存储库方法时这是我所做的。注释的命名有点让人误解...... – Benny
^^我认为这是你的答案。 –