Добавить префикс к URL-адресам всех классов контроллеров в пакете

Я разрабатываю службу RESTful с использованием Spring 3.0, работающего в среде Tomcat Apache 6.0. Spring DispatcherServlet настроен в «/ spring / *». Сервлет Spring обрабатывает несколько клиентов и имеет множество контроллеров в приложении. Я добавляю новый контроллер для службы REST. Я хочу, чтобы у всех моих классов контроллеров был идентификационный префикс типа "ws" (веб-служба), чтобы полный URL-адрес ресурса выглядел так:
http: // : / / spring / ws / service1

Единственный способ, который я нашел с помощью аннотации Spring, - это использовать @RequestMapping следующим образом:

@Controller
@RequestMapping("/ws/service1")
public class Service1 {

@RequestMapping(method=RequestMethod.GET)
@ResponseBody
public String getHtml() { ... }  

....
}

Но поскольку у меня есть десятки классов, я не хочу вставлять префикс «/ ws» в каждый класс. Таким образом, если другой разработчик добавляет новую службу, ему не нужно помнить о том, чтобы поставить этот префикс, а также, если мы решим изменить имя префикса с «/ ws» на что-то другое, мне не нужно менять все файлы. Я обнаружил, что аннотация @RequestMapping применима только к методам или классам, а не на уровне пакета.

Можно ли каким-либо образом настроить, чтобы все мои контроллеры REST получали доступ с префиксом?

Обратите внимание, что я не могу измените сопоставление URL-адресов web.xml сервлета Spring, поскольку с этим URL-адресом работают другие контроллеры.

7
задан Shreerang 13 July 2011 в 19:14
поделиться