【发布时间】:2015-12-24 02:30:58
【问题描述】:
我已经设置了一个@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);
}
}
提前感谢您的帮助,我只是找不到错误。
【问题讨论】:
-
请您解释一下您所说的不工作是什么意思?你是如何调用你的休息服务的?同样的设置对我有用,我相信问题可能在于你如何断定它不起作用。
-
好吧,我想我误解了@RepositoryEventHandler 的概念。它在对 Data-REST 公开的存储库执行的 HTTP 请求上调用,但不是在您以编程方式使用任何存储库方法时调用,这就是我所做的。注释的命名以某种方式误导......
-
^^ 我想这就是你的答案。
-
有没有办法监听以编程方式完成的存储库更改?
-
如果你使用注解,你可以像
@PrePersist这样使用JPA回调。
标签: spring spring-boot spring-data-jpa spring-data spring-data-rest