实现Spring Data存储库的自定义方法并通过REST公开它们
我正在尝试将自定义方法添加到我的Spring Data存储库中PersonRepository,如针对Spring Data存储库的1.3自定义实现中所述,并通过REST公开这些方法。初始代码来自使用REST示例访问JPA数据,这是添加/修改的类的代码:
interface PersonRepositoryCustom { List<Person> findByFistName(String name);
}
class PersonRepositoryImpl implements PersonRepositoryCustom, InitializingBean {
@Override
public void afterPropertiesSet() throws Exception {
// initialization here
}
@Override
public List<Person> findByFistName(String name) {
// find the list of persons with the given firstname
}
}
@RepositoryRestResource(collectionResourceRel = "people", path = "people")
public interface PersonRepository extends PagingAndSortingRepository<Person, Long> {
List<Person> findByLastName(@Param("name") String name);
}
运行应用程序并访问时http://localhost:8080/portfolio/search/
,我得到以下响应正文:
{ "_links" : {
"findByLastName" : {
"href" : "http://localhost:8080/people/search/findByLastName{?name}",
"templated" : true
}
}
}
为什么findByFirstName
即使在PersonRepository
界面中可用也不暴露?
另外,有没有办法动态/以编程方式添加要通过REST公开的存储库?
回答:
这些方法未公开的原因是,你基本上可以自由地在自定义存储库方法中实现所需的任何内容,因此不可能推理出支持该特定资源的正确HTTP方法。
在你的情况下,使用Plain可能很好GET
,在其他情况下,可能必须使用a,POST
因为该方法的执行会产生副作用。
当前的解决方案是设计一个自定义控制器来调用存储库方法。
以上是 实现Spring Data存储库的自定义方法并通过REST公开它们 的全部内容, 来源链接: utcz.com/qa/410999.html