Java 使用“路径”定义自定义方法/{resourcename}/search/“搜索”;使用spring数据rest

Java 使用“路径”定义自定义方法/{resourcename}/search/“搜索”;使用spring数据rest,java,spring,rest,spring-data-rest,Java,Spring,Rest,Spring Data Rest,我很困惑。我不知道如何将自定义“搜索”方法与借助SpringDataREST加载的方法一起定义。 你能回答我吗,框架是否有这种“开箱即用”的可能性? 如果有,你能告诉我,我在哪里能找到它吗 为了更深入地了解我的情况,我描述了我的问题: class UserService { public String getListOfWaitingUsers() { return userRepository.findAll(UserSpecification.isWaiting()

我很困惑。我不知道如何将自定义“搜索”方法与借助SpringDataREST加载的方法一起定义。 你能回答我吗,框架是否有这种“开箱即用”的可能性? 如果有,你能告诉我,我在哪里能找到它吗

为了更深入地了解我的情况,我描述了我的问题:

class UserService {
    public String getListOfWaitingUsers() {

        return userRepository.findAll(UserSpecification.isWaiting());
    }
} 

public interface UserRepository extends PagingAndSortingRepository<User, Long>{
   Page<User> findByNameLike(@Param("name") String name, Pageable pageable);
}
如何实现我的规范或服务方法(存储库中没有方法)将使用路径“/resource\u name/search/method\u name”(存储库的方法+(方法服务规范)进行定义

  • SpringDataREST框架基于SpringDataRespository,所以这里可以忽略您的服务类
  • 所有不属于CRUD/分页存储库的方法都以“搜索”形式公开方法提供了使用@Param annotation注释所有参数的方法。因此,在您的情况下,您需要按照实现方法。因此,一旦实现了
    findByNameLike
    方法,该方法将公开为
    。/search/findByNameLike
    URL。如果需要,您可以使用
    @rest自定义rel和路径esource
    注释
  • 另请注意,
    UserRepository
    理想情况下应该只处理
    User
    对象,从而处理您定义的方法。在您的情况下,
    UserRepository
    返回
    ProcessContext
    对象?相反,它应该如下所示

    public interface UserRepository extends PagingAndSortingRepository<User, Long>{
      Page<User> findByNameLike(@Param("name") String name, Pageable pageable);
    }
    
    public interface UserRepository扩展了分页和排序存储库{
    PageFindBynameLike(@Param(“name”)字符串名称,可分页;
    }
    
public interface UserRepository extends PagingAndSortingRepository<User, Long>{
  Page<User> findByNameLike(@Param("name") String name, Pageable pageable);
}