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注解的处理方法和映射对象RequestMappingInfo 。
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 .junit 4.SpringJUnit 4ClassRunner
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 ())
}
}
}