思路:
- 拿到上下文ApplicationContext
- 所有信息在RequestMappingHandlerMapping中
核心代码:
获取的代码示例:
import org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping;
import org.springframework.web.servlet.mvc.method.RequestMappingInfo;
import org.springframework.web.method.HandlerMethod
...
//获取Bean RequestMappingHandlerMapping.class
RequestMappingHandlerMapping mapping = SpringContextUtils.getApplicationContext().getBean(RequestMappingHandlerMapping.class);
// 拿到Handler适配器中的全部方法
Map<RequestMappingInfo, HandlerMethod> methodMap = mapping.getHandlerMethods();
List<String> urlList = new ArrayList<>();
for (RequestMappingInfo info : methodMap.keySet()) {
Set<String> urlSet = info.getPatternsCondition().getPatterns();
System.out.println(urlSet+"--"+info.getMethodsCondition() + methodMap.get(info) );
}
ApplicationContext封装的示例SpringContextUtils.java
非必须
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.DisposableBean;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.context.annotation.Lazy;
@Lazy(false)
public class SpringContextUtils implements ApplicationContextAware, DisposableBean {
private static Logger logger = LoggerFactory.getLogger(SpringContextUtils.class);
private static ApplicationContext applicationContext = null;
public SpringContextUtils() {
}
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
SpringContextUtils.applicationContext = applicationContext;
}
public static ApplicationContext getApplicationContext() {
return applicationContext;
}
public static Object getBean(String name) {
return applicationContext.getBean(name);
}
public static <T> T getBean(String name, Class<T> clazz) {
return applicationContext.getBean(name, clazz);
}
public static <T> T getBean(Class<T> clazz) {
return applicationContext.getBean(clazz);
}
public static void clearHolder() {
logger.debug("清除SpringContext中的ApplicationContext:{}", applicationContext);
applicationContext = null;
}
public void destroy() throws Exception {
clearHolder();
}
}

3039

被折叠的 条评论
为什么被折叠?



