Переопределение RequestMapping на контроллере SpringMVC

просматривая источник для наших приложений, я нашел общий контроллер Spring MVC, который отображает ключ и значения конфигурации, скопированные и вставленные несколько раз. Определения классов точно такие же, за исключением значения RequestMapping, так как каждое приложение хочет, чтобы эта страница была доступна по разным URL-адресам.

Я хочу переместить этот контроллер в общую библиотеку и предоставить значение RequestMapping по умолчанию.

@Controller 
@RequestMapping (value="/property")
public class CommonPropertyController {
   ....
}

Как бы каждый применение переопределить это значение, если они хотят использовать свой собственный шаблон url?

1 ответов


глядя на исходный код, я получил представление о том, как это сделать, не возвращаясь к определению обработчика manual (pre-annotation) (что также является способом реализации того, что вам нужно).

весной позволяет использовать заполнитель собственность configurers в @RequestMapping значения. Таким образом, можно использовать этот факт и определить @RequestMapping как:

@Controller
@RequestMapping("${routing.property.path}")
public class CommonPropertyController {
    ....
}

затем вы можете просто определить PropertySourcesPlaceholderConfigurer с правильными свойствами в контексте вашего приложения, и вы хорошо идти.


обновление вы также можете указать значение по умолчанию, используя заполнитель свойства, если вы хотите иметь резервное сопоставление в случае, если свойство не speciefied:

@RequestMapping("${routing.property.path:/property}")