编程语言
首页 > 编程语言> > java-使用spring-data-rest定义路径为“ / {resourcename} / search /”的自定义方法

java-使用spring-data-rest定义路径为“ / {resourcename} / search /”的自定义方法

作者:互联网

我很困惑.我不知道如何将自定义“搜索”方法与通过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

如何实现我的规范或服务方法(存储库中没有方法)将使用路径“ / resource_name / search / METHOD_NAME”(存储库的方法(METHODS SERVICES或SPECIFICATIONS))进行定义

解决方法:

> Spring Data REST框架基于Spring Data Repository,因此在这里可以忽略您的服务类.
>如果您使用@Param批注对所有参数进行批注,则所有不属于CRUD /分页存储库的方法都将作为“搜索”方法公开.因此,在您的情况下,您需要在conventions outline in Spring Data commons docs之后实现您的方法.因此,一旦实现了findByNameLike方法,该方法将显示为../search/findByNameLike URL.如果需要,可以使用@RestResource注释自定义rel和path.
>另请注意,理想情况下,您的UserRepository应该只在User对象上工作,因此也应该在定义的方法上工作.在您的情况下,UserRepository返回的是Process / ProcessContext对象?相反,它应该像下面

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

标签:rest,spring-data-rest,spring,java
来源: https://codeday.me/bug/20191029/1961287.html