在Spring服务中不能使用ReposiotryResource端点

时间:2018-03-27 07:52:16

标签: java rest spring-boot

我正在使用此代码在我的Reposioptory界面上使用@RepositoryResource注释:

@RepositoryRestResource(collectionResourceRel = "rest", path = "rest")
public interface HoliDayRepository extends CrudRepository<HoliDayEntity, Integer> {

    HoliDayEntity findOne(Integer id);

}

我还在控制器类

中添加了RequestMapping(“rest”)
@RestController
@RequestMapping("/rest")
public class DayController {}

但是当我启动Spring启动应用程序并尝试此链接时:http://localhost:8080/rest我在构建应用程序时遇到404错误我有ResourceNotFoumd异常应该如何管理这些错误?

2 个答案:

答案 0 :(得分:0)

用弹簧靴启动你不需要创建自己的控制器;还要确保您的Web应用程序映射与用于spring数据的映射不同,例如,您可以在application.properties spring.data.rest.base-path: /api

中进行设置

看一下这个例子:

public interface PersonRepository extends JpaRepository<Person, UUID> {
    List<Person> findByAddress(String address);
}

只需使用此代码,您就可以在此处访问spring数据存储库:http://localhost:8080/api以及此处的人员端点http://localhost:8080/api/person

请查看本教程:https://spring.io/guides/tutorials/react-and-spring-data-rest/或此示例:https://github.com/Paizo/SpringBootCamelStreamsExample

答案 1 :(得分:-2)

您需要一种在您点击终点时应该调用的方法。

尝试以下并查看spring示例: https://spring.io/guides/tutorials/bookmarks/

@Autowired
private HoliDayRepository holiDayRepository; //your repository to execute the query

@GetMapping(value = "/{id}")//you can use @RequestMapping(method = RequestMethod.GET, value = "/{holida}")
public ResponseEntity<HoliDayEntity > getHolidayById(@PathVariable("id") Integer id) {

    HoliDayEntity holiDayEntityresponse = productOperations.getProductById(id);
    return new ResponseEntity<>(holiDayEntityresponse , HttpStatus.OK);
}

编辑: 正如Gimby所指出的,当使用@RepositoryRestResource时,这不适用。附加的代码和教程都是通过创建控制器来引用创建新的REST服务