Spring 数据 Rest:使用相同的请求映射路径覆盖 RestController 中的方法

Spring Data Rest: Override Method in RestController with same request-mapping-path

给定我们应用程序中的以下工作存储库:

public interface PersonRepository extends PagingAndSortingRepository<Person, Integer> {

}

存储库通过 spring-data-rest 与 URI“/api/persons”公开并按预期工作。

我们现在想在 RestController 的方法中覆盖存储库的 post 方法:

@RestController
@RequestMapping("/persons")
public class PersonController {

@RequestMapping(value = "/**", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<String> savePerson(@RequestBody Person person) {
      //do something fancy
      return "it works";
}

如果我们 post 数据到“/api/persons”,PersonController 的方法将被调用,但是 PersonRepository 的方法(例如 GET)的 none 可以通过 rest 访问。我们不断收到 405 错误和以下异常:

org.springframework.web.HttpRequestMethodNotSupportedException: Request method 'GET' not supported

经过一番尝试,我们发现如果我们将@RequestMapping注解的值-属性从

更改为属性,一切都按预期工作(可以调用存储库和控制器的方法)
value="/**"

value="/save"

阅读此 question 和链接文档后,如果值-属性 为“/**”

,它也应该有效

最后,在升级到 spring/spring-data/spring-data-rest 的新版本后,一切正常。