在Spring中实现CrudRepository。 我应该遵循的最佳设计是什么?

我有来自CrudRepository的User Repository扩展,如下所示

public interface UserRepository extends CrudRepository, DatatablesCriteriasRepository 

DatatablesCriteriasRepository有一个函数需要单独为不同的存储库实现。

所以我创建了这样的存储库实现类。 在impl包中。

 public class UserRepositoryImpl implements DatatablesCriteriasRepository 

请注意,这只是为了实现DatatablesCriteriasRepository的函数。 我不想覆盖框架中CrudRepository提供的默认function。

但是,如果我这样做,它将更适合代码设计,因为UserRepositoryImpl实际上实现了UserRepository ,顾名思义。

 public class UserRepositoryImpl implements UserRepository 

但是这又会迫使我扩展UserRepository接口中的所有函数。 如何通过良好的代码设计解决这个问题?

UserRepositoryImpl在实现DatatablesCriteriasRepository是否具有此名称?

Spring的存储库自定义实现文档提供了实现它的方法,因为@JBNizet指向了我。

文档摘录如下。

自定义存储库function的接口

 interface UserRepositoryCustom { public void someCustomMethod(User user); } 

自定义存储库function的实现

 class UserRepositoryImpl implements UserRepositoryCustom { public void someCustomMethod(User user) { // Your custom implementation } } 

对基本存储库界面的更改

 interface UserRepository extends CrudRepository, UserRepositoryCustom { // Declare query methods here }