如何在全局更改Spring Data存储库的事务设置?

时间:2014-11-27 12:50:23

标签: spring spring-data spring-aop

我正在将Spring Data用于我的应用程序存储库。

interface MyUserRepository extends JpaRepository<MyUser, Long> { … }

Spring数据默认为存储库添加事务,但如果我没有弄错,则使用Propagation.REQUIRED。我如何为AOP中的所有存储库设置Propagation.MANDATORY。我不想为每个存储库设置注释。

这背后的想法是禁止在事务范围之外使用存储库,因此它们只能通过服务使用。我正在使用AOP进行其他服务,但由于它们已被代理,因此它无法正常用于存储库。

1 个答案:

答案 0 :(得分:4)

您可以创建自定义存储库基本界面,并使用您需要的设置进行注释:

@NoRepositoryBean
@Transactional(propagation = Propagation.MANDATORY)
public interface BaseRepository<T, ID extends Serializable> extends PagingAndSortingRepository<T, ID> {

}

现在让您的所有应用程序存储库扩展该基本存储库接口,您将会很高兴。