Spring @RequestMapping 绝对路径

Spring @RequestMapping absolute path

我有一个用于 CRUD 的 RestController,注释如下:

@RestController
@RequestMapping("/rest/v1/area")
public class AreaController

我的方法注释如下:

@RequestMapping(value = "/{uuid}", method = RequestMethod.PUT)
public ResponseEntity<Area> save(@Valid @RequestBody Area area) {

有没有办法使用方法的值来获得绝对路径?我想添加一个上传文件的方法,并且不想为此制作一个新的控制器。我想要一个像这样的方法:

@RequestMapping(value = "/rest/v1/area-upload", method = RequestMethod.PUT
public String handleFileUpload(@RequestParam("file") MultipartFile file, RedirectAttributes redirectAttributes) {

谢谢!

您可以只更改控制器的路由映射。

@RestController
@RequestMapping("/rest/v1")
public class AreaController

方法的映射为:

@RequestMapping(value = "/area-upload", method = RequestMethod.PUT
public String handleFileUpload(@RequestParam("file") MultipartFile file, RedirectAttributes redirectAttributes) {

来自文档:(spring 2.5 api document of requestmapping)

Method-level mappings are only allowed to narrow the mapping expressed at the class level (if any)

所以你不能覆盖,只能缩小到子路径。

当然,如果您创建一个新控制器 class 并将方法放在那里,您可以让它指向您喜欢的任何路径。