Это звучит как интересная идея, и поэтому я пошел копаться в исходном коде Spring Web MVC, чтобы выяснить, есть ли способ.
Сначала я включил отладку для своего весеннего каркаса каркаса (log4j) и заметил, что сопоставления сделаны в моем классе org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping (поскольку я использую это).
Копая Фуртур, я заметил, что все сопоставления обработчиков добавляются в карту обработчиков, которую вы можете получить из
org.springframework.web.servlet.handler.AbstractUrlHandlerMapping # getHandlerMap
Предполагается, что вы используете обработчик, производный от него.
Далее я обнаружил, что DispatcherServlet использует HandlerMapping, который реализует AbstractUrlHandlerMapping (и AbstractHandlerMapping), для разрешения URL (очевидно, они должны его использовать). И оказывается, что DispatcherServlet содержит еще один список обработчиковMappings
org.springframework.web.servlet.DispatcherServlet # handlerMappings
Плохая новость в том, что это переменная экземпляра защищенного класса.
Так что моя лучшая рекомендация (если это можно считать наилучшей), которую вы можете сделать, чтобы выяснить все отображенные URL-адреса:
- Получите экземпляр ApplicationContext.
- Найдите все компоненты по крайней мере типа AbstractUrlHandlerMapping (поскольку что-либо еще не говорит вам ни о каком отображенном URL).
- Выполните итерацию списка и вызовите getHandlerMap и получите весь набор ключей, который является отображаемым URL.
Обратите внимание, что это то, что я извлек из своего использования аннотаций @RequestMapping. Я не уверен, насколько это отличается, если вы отображаете URL-адреса в файлах конфигурации Spring.