package org.demo.spring;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.method.HandlerMethod;
import org.springframework.web.servlet.mvc.condition.PatternsRequestCondition;
import org.springframework.web.servlet.mvc.condition.RequestMethodsRequestCondition;
import org.springframework.web.servlet.mvc.method.RequestMappingInfo;
import org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping;
import java.util.*;
@Component
@Slf4j
public class MappingTest {
@Autowired
private RequestMappingHandlerMapping requestMappingHandlerMapping;
public List> urlList() {
List> urlList = new ArrayList>();
Map map = requestMappingHandlerMapping.getHandlerMethods();
for (Map.Entry m : map.entrySet()) {
HashMap hashMap = new HashMap();
RequestMappingInfo info = m.getKey();
HandlerMethod method = m.getValue();
PatternsRequestCondition p = info.getPatternsCondition();
for (String url : p.getPatterns()) {
hashMap.put("url", url);
}
// Controller的类名
hashMap.put("className", method.getMethod().getDeclaringClass().getName());
// url对应的Controller中的方法
hashMap.put("methodName", method.getMethod().getName());
RequestMethodsRequestCondition methodsCondition = info.getMethodsCondition();
Set methods = methodsCondition.getMethods();
// 请求方法类型put/post/get
hashMap.put("methods", methods);
urlList.add(hashMap);
}
log.info("返回结果:{}", String.valueOf(urlList));
return urlList;
}
}