Как получить доступ к getHandlerMap () через RequestMappingHandlerMapping после того, как DefaultAnnotationHandlerMapping устарела - PullRequest
1 голос
/ 06 мая 2019

Поскольку Spring устарела DefaultAnnotationHandlerMapping и была заменена на RequestMappingHandlerMapping, я застрял в случае, когда у меня был код, подобный приведенному ниже:

@Autowired
private DefaultAnnotationHandlerMapping handlerMapping;

//in an API that lists handler mapping
Map<String, Object> handlerMap = handlerMapping.getHandlerMap();

Теперь,RequestMappingHandlerMapping не предоставляет этот метод.Какую функцию я могу использовать, чтобы получить желаемую карту обработчика?

Что нужно учесть при ответе:

  • У меня ограниченные знания о том, как работает отображение обработчика, в основном ограниченчто объясняется здесь .

Вещи, на которые я смотрел:

  • Я пытался пройти родительские классы для обоих DefaultAnnotationHandlerMapping & RequestMappingHandlerMapping.Я пришел к выводу, что AbstractUrlHandlerMapping - это функция, которая содержит getHandlerMap() и расширяет AbstractHandlerMapping.

  • RequestMappingHandlerMapping имеет AbstractHandlerMethodMapping<T> в качестве супер-родителя и расширяет AbstractHandlerMappingно я не смог найти что-то похожее на getHandlerMap()

1 Ответ

0 голосов
/ 08 мая 2019

Оказывается, так как AbstractUrlHandlerMapping - это класс, который содержит функцию и getHandlerMap в соответствии с ее javadoc

Возвращает зарегистрированные обработчики в качестве неизменяемой карты, с зарегистрированным путем в качестве ключа и объектом обработчика (или именем bean-компонента обработчика в случае обработчика lazy-init) в качестве значения.

Поскольку это внутренняя карта Spring, любой класс, который расширяет AbstractUrlHandlerMapping, может быть использован для извлечения карты. В частности, я использовал BeanNameUrlHandlerMapping.

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