使用路径" / {resourcename} / search /"定义自定义方法;使用spring-data-rest

时间:2014-04-28 11:50:01

标签: java spring rest spring-data-rest

我很困惑。我无法找到,如何定义自定义"搜索"使用spring-data-rest帮助加载的方法的方法。 你能否回答我,框架是否有这种可能性"开箱即用"? 如果有,你能告诉我,我在哪里可以找到它?

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

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);
}

我希望它像:

/user/search/
        findByNameLike
        findWaitingUsers

如何实现我的规范或服务方法(存储库中没有方法)将使用路径&#34; / resource_name / search / METHOD_NAME&#34;来定义。 (存储库方法 +(METHODS 服务规范

1 个答案:

答案 0 :(得分:4)

  • Spring Data REST框架基于Spring Data Respository,因此您可以在此处忽略您的服务类。
  • 所有不属于CRUD / Paging Repository的方法都显示为“搜索”方法,为您提供带@Param注释的所有参数注释。因此,在您的情况下,您需要在conventions outline in Spring Data commons docs之后实现您的方法。因此,一旦您实施了findByNameLike方法,该方法就会显示为../search/findByNameLike网址。如果需要,您可以使用@RestResource注释自定义rel和路径。
  • 另请注意,您的UserRepository理想情况下应仅适用于User对象,因此也适用于您定义的方法。在您的情况下,UserRepository正在返回Process / ProcessContext个对象?相反,它应该像下面

    public interface UserRepository extends PagingAndSortingRepository<User, Long>{
      Page<User> findByNameLike(@Param("name") String name, Pageable pageable);
    }