Spring服务中无法使用RepositoryResource端点问题求助
问题分析与解决方案
你遇到的问题核心是路径映射冲突:Spring Data REST的@RepositoryRestResource已经将你的HoliDayRepository接口映射到了/rest路径,而你的DayController又用@RequestMapping("/rest")抢占了同一个路径,导致Spring无法正确分发请求,自然会出现访问异常。
解决方案一:调整Controller的请求路径
把DayController的@RequestMapping改成更具体的子路径,避免和Repository的路径重叠:
@RestController @RequestMapping("/rest/days") // 修改为子路径 public class DayController { // 你的接口方法 }
调整后:
- Spring Data REST的Repository接口依然可以通过
http://localhost:8080/rest访问 - 你的Controller接口则通过
http://localhost:8080/rest/days访问
解决方案二:调整RepositoryRestResource的路径
如果更希望保留Controller的/rest路径,可以修改@RepositoryRestResource的path属性:
@RepositoryRestResource(collectionResourceRel = "holidays", path = "holidays") // 修改path为holidays public interface HoliDayRepository extends CrudRepository<HoliDayEntity, Integer> { HoliDayEntity findOne(Integer id); }
调整后:
- Repository接口的访问路径变为
http://localhost:8080/holidays - Controller的
/rest路径不受影响,正常访问
额外提示
其实Spring Data REST默认会根据实体类名自动生成路径(比如HoliDayEntity会默认映射到/holiDays),如果你没有特别的自定义需求,甚至可以去掉@RepositoryRestResource注解,这样也能天然避免路径冲突。
内容的提问来源于stack exchange,提问作者beginer beginer
相关产品推荐
相关产品推荐

