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