我从 CrudRepository 扩展了用户存储库,如下所示
public interface UserRepository extends CrudRepository<User, Long>, DatatablesCriteriasRepository<User>
DatatablesCriteriasRepository
有一个函数需要针对不同的存储库单独实现。
所以我创建了这样的存储库实现类。在 impl
包中。
public class UserRepositoryImpl implements DatatablesCriteriasRepository<User>
请注意,这只是为了实现 DatatablesCriteriasRepository
中的功能。我不想覆盖框架在 CrudRepository
中提供的默认功能。
但如果我这样做,它会更适合代码设计,因为 UserRepositoryImpl
实际上实现了 UserRepository
,顾名思义。
public class UserRepositoryImpl implements UserRepository
但这又会迫使我扩展 UserRepository 接口(interface)中的所有功能。顺便说一下如何在好的代码设计中解决这个问题?
UserRepositoryImpl
在实现 DatatablesCriteriasRepository
时可以使用这个名称吗?
最佳答案
Spring's repositories custom implementations正如@JBNizet 向我指出的那样,文档提供了实现它的方法。
文档摘录如下。
自定义存储库功能的接口(interface)
interface UserRepositoryCustom {
public void someCustomMethod(User user);
}
自定义存储库功能的实现
class UserRepositoryImpl implements UserRepositoryCustom {
public void someCustomMethod(User user) {
// Your custom implementation
}
}
对基本存储库界面的更改
interface UserRepository extends CrudRepository<User, Long>, UserRepositoryCustom {
// Declare query methods here
}
关于java - 在 Spring 中实现 CrudRepository。我应该遵循的最佳设计是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29467886/