首页 > 解决方案 > 弃用 DefaultAnnotationHandlerMapping 后如何通过 RequestMappingHandlerMapping 访问 getHandlerMap()

问题描述

由于Spring 已弃用DefaultAnnotationHandlerMapping并已被 替换RequestMappingHandlerMapping,因此我遇到了以下代码的情况:

@Autowired
private DefaultAnnotationHandlerMapping handlerMapping;

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

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

回答时要考虑的事项:

我一直在看的东西:

标签: springspring-mvc

解决方案


原来,因为AbstractUrlHandlerMapping是持有函数的类,而 getHandlerMap 通过它的 javadoc

将注册的处理程序作为不可修改的 Map 返回,注册的路径作为键,处理程序对象(或处理程序 bean 名称,在惰性初始化处理程序的情况下)作为值。

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


推荐阅读