Far*_*ook 8 java spring design-patterns spring-data
我有来自CrudRepository的User Repository扩展,如下所示
public interface UserRepository extends CrudRepository<User, Long>, DatatablesCriteriasRepository<User>
Run Code Online (Sandbox Code Playgroud)
DatatablesCriteriasRepository 具有需要针对不同存储库单独实现的功能.
所以我创建了这样的存储库实现类.在impl包中.
public class UserRepositoryImpl implements DatatablesCriteriasRepository<User>
Run Code Online (Sandbox Code Playgroud)
请注意,这只是为了实现这些功能DatatablesCriteriasRepository.我不想覆盖CrudRepository框架中提供的默认功能.
但是,如果我做这样的事情,它将更适合代码设计,正如名称所暗示的UserRepositoryImpl实际实现UserRepository.
public class UserRepositoryImpl implements UserRepository
Run Code Online (Sandbox Code Playgroud)
但同样这将迫使我扩展UserRepository接口中的所有函数.如何通过良好的代码设计解决这个问题?
UserRepositoryImpl它实现时可以有这个名字DatatablesCriteriasRepository吗?
Far*_*ook 15
Spring的存储库自定义实现文档提供了实现它的方法,因为@JBNizet指向了我.
文档摘录如下.
自定义存储库功能的接口
interface UserRepositoryCustom {
public void someCustomMethod(User user);
}
Run Code Online (Sandbox Code Playgroud)
自定义存储库功能的实现
class UserRepositoryImpl implements UserRepositoryCustom {
public void someCustomMethod(User user) {
// Your custom implementation
}
}
Run Code Online (Sandbox Code Playgroud)
对基本存储库界面的更改
interface UserRepository extends CrudRepository<User, Long>, UserRepositoryCustom {
// Declare query methods here
}
Run Code Online (Sandbox Code Playgroud)