利用RequestMappingHandlerMapping提取Spring MVC @RequestMapping
2016-05-25 18:56
746 查看
Spring MVC 映射注入类继承结构
其中getHandlerMethods能够获取所有处理方法和映射,代码如下:
/** * Return a map with all handler methods and their mappings. */ public Map<T, HandlerMethod> getHandlerMethods() { return Collections.unmodifiableMap(this.handlerMethods); }
如果能够获得RequestMappingInfoHaddlerMapping Bean实例,就能通过getHandlerMethods()方法得到使用Spring MVC注解的处理方法和映射对象[b]RequestMappingInfo。[/b]
RequestMappingInfo存储中所有Handler的配置信息。
使用@Configuration注解配置Bean,获取RequestMappingHandlerMapping
package com.zokapper.configration; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping; @Configuration public class RequestMappingHandlerConfig{ @Bean public RequestMappingHandlerMapping requestMappingHandlerMapping() { RequestMappingHandlerMapping mapping = new RequestMappingHandlerMapping(); return mapping; } }
编写测试类测试
package com.zokapper.configuration; import java.util.HashMap; import java.util.Map; import java.util.Set; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.core.annotation.AnnotationUtils; import org.springframework.mock.web.MockHttpServletRequest; import org.springframework.mock.web.MockHttpServletResponse; import org.springframework.stereotype.Controller; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.method.HandlerMethod; import org.springframework.web.servlet.mvc.method.RequestMappingInfo; import org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping; import com.zokapper.configuration.RequestMappingHandlerConfig; @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(locations = { "classpath:applicationContext-[MVC].xml","classpath:applicationContext.xml"}) public class RequestMappingHandlerConfigTest { @Autowired RequestMappingHandlerConfig requestMappingHandlerConfig; //Spring MVC 提取注解中URL映射 @Test public void detectHandlerMethods(){ final RequestMappingHandlerMapping requestMappingHandlerMapping = requestMappingHandlerConfig.requestMappingHandlerMapping (); Map<RequestMappingInfo, HandlerMethod> map = requestMappingHandlerMapping.getHandlerMethods(); Set<RequestMappingInfo> mappings = map.keySet(); Map<String, String> reversedMap = new HashMap<String, String>(); for(RequestMappingInfo info : mappings) { HandlerMethod method = map.get(info); System.out.println (method.toString()+"===>"+info.getPatternsCondition().toString()); } } }
相关文章推荐
- 一个jar包里的网站
- 一个jar包里的网站之文件上传
- 一个jar包里的网站之返回对媒体类型
- Spring和ThreadLocal
- Spring Boot 开发微服务
- Spring整合Quartz(JobDetailBean方式)
- Spring整合Quartz(JobDetailBean方式)
- 模拟Spring的简单实现
- Spring整合WebSocket应用示例(上)
- spring+html5实现安全传输随机数字密码键盘
- Spring中属性注入详解
- springmvc 发送ajax出现中文乱码的解决方法汇总
- SpringMVC框架下JQuery传递并解析Json格式的数据是如何实现的
- struts2 spring整合fieldError问题
- spring的jdbctemplate的crud的基类dao
- 读取spring配置文件的方法(spring读取资源文件)
- Spring Bean基本管理实例详解
- java实现简单美女拼图游戏
- 浅析Java中的set集合类型及其接口的用法