SpringMVC获取注解RequestMapping

在实现用户权限管理模块的时候,我希望能将所有配置的action存储到行为表中,便于细粒度控制行为的权限.由于controller使用的是springMVC实现的,所以我希望在项目启动时,能够先获取到项目中所有配置的RequestMapping,存储到数据库中.


1.servlet


public class GetAllRequestMappingTest extends HttpServlet  {

	private static final long serialVersionUID = 1L;

	public void init(ServletConfig config) throws ServletException {
		System.out.println("GetAllRequestMappingTest in");
		ServletContext context = config.getServletContext();
		WebApplicationContext webApp =  WebApplicationContextUtils.getRequiredWebApplicationContext(context);

		 RequestMappingHandlerMapping rmhp = webApp.getBean(RequestMappingHandlerMapping.class);  
	        Map<RequestMappingInfo, HandlerMethod> map = rmhp.getHandlerMethods();  
	        for (Iterator<RequestMappingInfo> iterator = map.keySet().iterator(); iterator    
	                .hasNext();) {    
	            RequestMappingInfo info = iterator.next();  
	            System.out.print(info.getConsumesCondition());  
	            System.out.print(info.getCustomCondition());  
	            System.out.print(info.getHeadersCondition());  
	            System.out.print(info.getMethodsCondition());  
	            System.out.print(info.getParamsCondition());  
	            System.out.print(info.getPatternsCondition());  
	            System.out.print(info.getProducesCondition());  
	  
	            System.out.print("===");
	              
	            HandlerMethod method = map.get(info);  
	            System.out.print(method.getMethod().getDeclaringClass().getName() + "--");
	            System.out.print(method.getMethod().getName());  
	            //System.out.print(method.getMethodAnnotation(RequestMapping.class).params()[0]);  
	            System.out.println();  
	        }  
	}

}

2.效果图



3.注意

网上有很多都是把该功能作为一个controller中的一个方法.原因是RequestMappingHandlerMapping这个类只能在controller中获取.在我尝试的过程中确实不在controller中,通过自动注入的方式是无法获得RequestMappingHandlerMapping类的.但是通过全局WebApplicationContext可以不用自动注入的方式获得RequestMappingHandlerMapping类.


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值