spring mvc 获取所有的controller中的url
新增ControllerReflect
原理:
从WebApplicationContext中获取RequestMappingHandlerMapping.class类型的所有bean.
代码如下:
在web.xml中增加:
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring.xml</param-value>
</context-param>
<listener>
<listener-class> org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
新增ControllerReflect
@Controller
@RequestMapping("/controllerReflect")
public class ControllerReflect {
@ResponseBody
@RequestMapping("getUrlMapping")
public Object getUrlMapping(HttpServletRequest request) {
WebApplicationContext wc = WebApplicationContextUtils.getRequiredWebApplicationContext(request.getSession().getServletContext());
RequestMappingHandlerMapping rmhp = wc.getBean(RequestMappingHandlerMapping.class);
Map<RequestMappingInfo, HandlerMethod> map = rmhp.getHandlerMethods();
for(RequestMappingInfo info : map.keySet()){
System.out.println(info.getPatternsCondition().toString()
+ ","
+map.get(info).getBean().toString());
}
return null;
}
}