弃用DefaultAnnotationHandlerMapping后如何通过RequestMappingHandlerMapping访问getHandlerMap()

时间:2019-05-06 12:18:49

标签: spring spring-mvc

由于Spring has deprecated DefaultAnnotationHandlerMapping并已由RequestMappingHandlerMapping取代,所以我遇到了如下代码的情况:

@Autowired
private DefaultAnnotationHandlerMapping handlerMapping;

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

现在,RequestMappingHandlerMapping不提供此方法。我可以使用哪个函数来获取所需的处理程序映射?

回答时应考虑的事项:

  • 我对处理程序映射的工作原理了解有限,基本上仅限于here所解释的内容。

我一直在看的东西:

  • 我尝试遍历DefaultAnnotationHandlerMappingRequestMappingHandlerMapping的父类。我得出的结论是AbstractUrlHandlerMapping是包含getHandlerMap()并扩展AbstractHandlerMapping的函数。

  • RequestMappingHandlerMapping具有AbstractHandlerMethodMapping<T>作为超级父级并扩展了AbstractHandlerMapping,但我找不到类似于getHandlerMap()

  • 的东西。

1 个答案:

答案 0 :(得分:0)

由于AbstractUrlHandlerMapping是包含该函数的类,而getHandlerMap是它的javadoc的类

  

将注册的处理程序作为不可修改的Map返回,将注册的路径作为键,并将处理程序对象(如果是lazy-init处理程序,则为处理程序bean名称)作为值。

由于这是内部Spring映射,所以可以使用扩展AbstractUrlHandlerMapping的任何类来检索映射。具体来说,我使用了BeanNameUrlHandlerMapping