2016-08-04 3 views
2

У меня есть RestController для CRUD аннотированный так:Spring @RequestMapping абсолютный путь

@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) { 

Спасибо!

+0

Я не думаю, что существует некоторое обходное меканизм, быстрый и простой способ - заменить аннотацию типа аннотацией метода на существующие методы, а затем добавить новый метод (обратите внимание, что вы можете сохранить общую часть URL-адреса по типу уровень, если вы хотите) –

ответ

5

Из документации: (spring 2.5 api document of requestmapping)

отображения Метод уровня разрешается только, чтобы сузить отображение выражается в классе (если таковые имеются)

Таким образом, вы не можете закончить ездить, только сузить его до подпутей.

Конечно, если вы создадите новый класс контроллера и поместите туда метод, вы можете указать его на любой путь.

+0

Спасибо @Joeblade за то, что указали мне в правильном направлении. Я проверил свою версию: http://docs.spring.io/spring-framework/docs/4.3.2.RELEASE/javadoc-api/org/springframework/web/bind/annotation/RequestMapping.html , и это все еще применяется. Спасибо всем за обходные пути, я проверял, возможно ли это, не меняя всех других сопоставлений. – German

2

Вы можете просто изменить отображение маршрута для контроллера.

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

и отображение для метода будет:

@RequestMapping(value = "/area-upload", method = RequestMethod.PUT 
public String handleFileUpload(@RequestParam("file") MultipartFile file, RedirectAttributes redirectAttributes) { 
Смежные вопросы