【发布时间】:2017-12-17 06:42:30
【问题描述】:
我正在使用 Spring Boot 1.5.4、Spring Data REST、Spring JPA、Hibernate,并且正在开发一个使用 REST API 的 Angular 客户端。
Spring Data REST 有很大帮助,我正在尝试遵循最佳实践,因此存储库类似于:
@Transactional
@PreAuthorize("isAuthenticated()")
public interface CustomerRepository extends PagingAndSortingRepository<Customer, Long> {
}
我自动拥有了所有的 save()、delete()、findXX() 方法。太好了。
现在我想知道在保存实体之前是否需要自定义业务逻辑。假设我需要进行某种复杂的验证(涉及对数据库的查询)和其他后台活动(可能保存相关实体、更新相关对象等)。 我的目标是:
- 确保每次保存实体时(通过 REST 调用或 JPA 调用)在保存对象之前调用我的业务逻辑
- 避免创建自定义存储库,因为开发人员可能会违反我的规则调用标准存储库
- 找到一种简单的方法来实现此目的,以使应用易于维护
@RepositoryEventHandler 对我来说还不够,因为我想确保我的业务逻辑始终得到验证,即使对方法的调用来自内部类。
您能否建议我实现目标的最佳方法?
【问题讨论】:
-
您好!关于使用 AOP - 也许this 会有所帮助...
标签: spring spring-boot spring-data-jpa spring-data-rest