在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 }