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<HashMap<String, Object>> urlList() {
List<HashMap<String, Object>> urlList = new ArrayList<HashMap<String, Object>>();
Map<RequestMappingInfo, HandlerMethod> map = requestMappingHandlerMapping.getHandlerMethods();
for (Map.Entry<RequestMappingInfo, HandlerMethod> m : map.entrySet()) {
HashMap<String, Object> hashMap = new HashMap<String, Object>();
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<RequestMethod> methods = methodsCondition.getMethods();
// 请求方法类型put/post/get
hashMap.put("methods", methods);
urlList.add(hashMap);
}
log.info("返回结果:{}", String.valueOf(urlList));
return urlList;
}
}
SpringMVC获取所有的controller和url映射关系
最新推荐文章于 2022-11-13 11:03:50 发布