实现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

回到顶部