我有一个要求,我需要在哪里使用自定义控制器覆盖其余资源的删除功能。这是restResource的代码
@RepositoryRestResource
public interface SampleRepository extends JpaRepository<Sample,Long>{
List<Sample> findBySampleNumber(@Param("sampleNumber") String sampleNumber);
}
我创建了一个自定义控制器,仅覆盖删除功能
@RepositoryRestController
@RequestMapping("/api/samples")
public class SampleController{
@Autowired
SampleRepository sampleRepository;
@RequestMapping(value = "/{id}", method = RequestMethod.DELETE)
@ResponseBody
public void delete(@PathVariable Long id) {
//do some custom logic here
//then delete the sample
//sampleRepository.delete(id);
}
但是,如果现在尝试在RepositoryRestResource上创建GET api/samples/1(someId)
或查找某些搜索功能,我会看到以下错误
"description": "Request method 'GET' not supported"
是否有办法只覆盖一个HTTP动词,其余的功能来自存储库。
但是,如果我从控制器发表评论public void delete
,我可以访问所有的crud和搜索操作
有没有人遇到过这样的问题
我正在使用SPRING_DATA_REST-2.5.1-Release
答案 0 :(得分:5)
您必须在method level only上使用RequestMapping注释。
答案 1 :(得分:5)
您需要将控制器定义为
@RepositoryRestController
public class SampleController{
@Autowired
SampleRepository sampleRepository;
@RequestMapping(value = "/api/samples/{id}", method = RequestMethod.DELETE)
public void delete(@PathVariable Long id) {
}
弹出数据提供了在域创建,保存和删除之前和之后执行的不同事件。
参考http://docs.spring.io/spring-data/rest/docs/current/reference/html/#events