打印 SpringMVC中所有的接口URL
采用junit test方式
1.配置 simple-test.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="requestMappingHandlerMapping" class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping"></bean>
<bean id="requestMappingHandlerAdapter" class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"></bean>
</beans>
2.Junit Test Case
package com.xxx.msa.test; import java.util.Map;
import java.util.Map.Entry;
import org.junit.BeforeClass;
import org.junit.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.web.method.HandlerMethod;
import org.springframework.web.servlet.mvc.method.RequestMappingInfo;
import org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter;
import org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping; public class TestUrl { @Autowired
private static RequestMappingHandlerAdapter handlerAdapter; @Autowired
private static RequestMappingHandlerMapping handlerMapping; @BeforeClass
public static void before(){
ApplicationContext ctx=new ClassPathXmlApplicationContext(new String[]{
"classpath*:config/spring/spring-main.xml",
"classpath*:config/spring/springmvc/springMVC.xml"
,"classpath*:config/spring/simple-test.xml"});
handlerAdapter=(RequestMappingHandlerAdapter) ctx.getBean("requestMappingHandlerAdapter");
handlerMapping=(RequestMappingHandlerMapping) ctx.getBean("requestMappingHandlerMapping");
} @Test
public void testUrls(){
Map<RequestMappingInfo, HandlerMethod> handlerMethods =handlerMapping
.getHandlerMethods(); for (Entry<RequestMappingInfo, HandlerMethod> item : handlerMethods
.entrySet()) {
RequestMappingInfo mapping = item.getKey();
HandlerMethod method = item.getValue(); for (String urlPattern : mapping.getPatternsCondition()
.getPatterns()) {
System.out.println(method.getBeanType().getName() + "#"
+ method.getMethod().getName() + " <-- " + urlPattern); if (urlPattern.equals("some specific url")) {
// add to list of matching METHODS
}
}
} } }
3.结果

4.延伸: 打印出符合markdown语法的表格
改写testUrl()
@Test
public void testUrls(){
System.out.println("------------以下文本复制到符合markdown语法的编辑器中------------\r\r"); Map<RequestMappingInfo, HandlerMethod> handlerMethods =handlerMapping
.getHandlerMethods();
StringBuilder sb=new StringBuilder();
sb.append("[MSA系统][1]").append("\r\n");
sb.append("| 序号 | 类名 | 方法名 | URI |说明|").append("\r\n");
sb.append("| :-----:|:----|:----|:----| :----|").append("\r\n");
int index=1;
for (Entry<RequestMappingInfo, HandlerMethod> item : handlerMethods
.entrySet()) {
RequestMappingInfo mapping = item.getKey();
HandlerMethod method = item.getValue();
sb.append("| ");
for (String urlPattern : mapping.getPatternsCondition().getPatterns()) {
sb.append(index+" |").append(method.getBeanType().getSimpleName()+" |").append(method.getMethod().getName()+" |").append(urlPattern+" |"); if (urlPattern.equals("some specific url")) {
// add to list of matching METHODS
}
index++;
}
sb.append("|\r\n");
}
sb.append("![MSA测量系统][2]").append("\r\n\r\n");
sb.append("[1]:http://baike.baidu.com/link?url=xTbrqN9R1f3b1nayzmLNlWRIV7qP3qg3g50ig14g68kPXIrcrgymGzniaR8Ay7g9kzLkYgPeUcHR_YxgTMESHa").append("\r\n");
sb.append("[2]:http:////img12.360buyimg.com/n0/jfs/t703/314/1199846466/213652/541cad01/5527d639N36f38009.jpg").append("\r\n");
System.out.println(sb); }
markdown语法表格效果
[MSA系统][1]
| 序号 | 类名 | 方法名 | URI |说明|
| :-----:|:----|:----|:----| :----|
| 1 |GageCheckRecordController |create |/GageCheckRecord/create ||
| 2 |GageCheckRecordController |update |/GageCheckRecord/update ||
| 3 |GageCheckRecordController |gageCheckRecordIndex |/GageCheckRecord/list ||
| 4 |GageCheckRecordController |gageCheckRecordExport |/GageCheckRecord/export ||
| 5 |GageController |delete |/Gage/delete/{gageId} ||
| 6 |GageController |CheckConfigUpate |/Gage/CheckConfig/update ||
| 7 |GageController |CheckConfigSwitch |/Gage/CheckConfigSwitch/update ||
| 8 |GageController |gageNew |/Gage/create ||
| 9 |GageController |gageUpdate |/Gage/update ||
| 10 |GageController |findByGageId |/Gage/{gageId} ||
| 11 |GageController |gageLeftList |/Gage/list ||
| 12 |GageController |gageIndex |/Gage/index ||
| 13 |GageController |gageCheckRecordExport |/Gage/export ||
| 14 |GrrAnalysisController |create |/GrrAnalysis/create ||
| 15 |GrrAnalysisController |list |/GrrAnalysis/list ||
| 16 |GrrAnalysisController |getResult |/GrrAnalysis/getResult ||
| 17 |GrrAnalysisController |getInput |/GrrAnalysis/getData ||
| 18 |GrrAnalysisController |saveData |/GrrAnalysis/saveData ||
| 19 |GrrAnalysisController |compute |/GrrAnalysis/compute ||
| 20 |GrrTemplateController |index |/GrrTemplate/index ||
| 21 |GrrTemplateController |createGrrTemplate |/GrrTemplate/create ||
| 22 |GrrTemplateController |deleteGrrTemplate |/GrrTemplate/delete ||
| 23 |GrrTemplateController |getGrrTemplate |/GrrTemplate/get ||
| 24 |IndexController |totest |/test ||
| 25 |IndexController |toindex |/toindex ||
| 26 |LoginController |currentCompanyAccount |/Login/currentCompanyAccount ||
| 27 |LoginController |login |/Login/login ||
| 28 |LoginController |toLogin |/Login/tologin ||
| 29 |LoginController |logout |/Login/logout ||
![MSA测量系统][2] [1]:http://baike.baidu.com/link?url=xTbrqN9R1f3b1nayzmLNlWRIV7qP3qg3g50ig14g68kPXIrcrgymGzniaR8Ay7g9kzLkYgPeUcHR_YxgTMESHa
[2]:http:////img12.360buyimg.com/n0/jfs/t703/314/1199846466/213652/541cad01/5527d639N36f38009.jpg
可以把这些东西记录在 有道云笔记中,也可以放在github中

打印 SpringMVC中所有的接口URL的更多相关文章
- 获取SpringMVC中所有RequestMapping映射URL信息
SpringMVC启动的时候,会把接口信息收集在RequestMappingHandlerMapping中,故可以通过这个类,拿到全部的映射信息,Sample代码段如下: @Autowired pri ...
- 在springmvc中,获取Connection接口
ServletContext context = request.getSession().getServletContext();WebApplicationContext wac = WebApp ...
- SpringMVC中url映射到Controller
SpringMVC也是一种基于请求驱动的WEB框架,并且使用了前端控制器的设计模式.前端控制器就是DispatcherServlet控制器,只要满足web.xml文件中的[url-pattern]的规 ...
- 如何在SpringMVC中使用REST风格的url
如何在SpringMVC中使用REST风格的url 1.url写法: get:/restUrl/{id} post:/restUrl delete:/restUrl/{id} put:/restUrl ...
- SpringMVC 中的Interceptor 拦截器
1.配置拦截器 在springMVC.xml配置文件增加: <mvc:interceptors> <!-- 日志拦截器 --> <mvc:interceptor> ...
- SpringMVC中@Controller和@RequestMapping用法和其他常用注解
一.简介 在SpringMVC 中,控制器Controller 负责处理由DispatcherServlet 分发的请求,它把用户请求的数据经过业务处理层处理之后封装成一个Model ,然后再把该Mo ...
- 【SpringMVC学习11】SpringMVC中的拦截器
Springmvc的处理器拦截器类似于Servlet 开发中的过滤器Filter,用于对处理器进行预处理和后处理.本文主要总结一下springmvc中拦截器是如何定义的,以及测试拦截器的执行情况和使用 ...
- (转)SpringMVC学习(十二)——SpringMVC中的拦截器
http://blog.csdn.net/yerenyuan_pku/article/details/72567761 SpringMVC的处理器拦截器类似于Servlet开发中的过滤器Filter, ...
- (转)SpringMVC学习(八)——SpringMVC中的异常处理器
http://blog.csdn.net/yerenyuan_pku/article/details/72511891 SpringMVC在处理请求过程中出现异常信息交由异常处理器进行处理,自定义异常 ...
随机推荐
- [OpenCV] Face Detection
即将进入涉及大量数学知识的阶段,先读下“别人家”的博文放松一下. 读罢该文,基本能了解面部识别领域的整体状况. 后生可畏. 结尾的Google Facenet中的2亿数据集,仿佛隐约听到:“你们都玩儿 ...
- Android 学习笔记之网络通信基础+WebView....
PS:加快学习进度...下周一完成Android网络通信...然后正式进入实战... 学习内容: 1.Android中Http基础... 2.Android中的Socket基础... 3.Androi ...
- Docker 定制容器镜像的2种方法
一.需求 由于在测试环境中使用了docker官网的centos 镜像,但是该镜像里面默认没有安装ssh服务,在做测试时又需要开启ssh.所以上网也查了查资料.下面详细的纪录下.在centos 容器内安 ...
- 第十二篇 SQL Server代理多服务器管理
本篇文章是SQL Server代理系列的第十二篇,详细内容请参考原文 在这一系列的上一篇,我们查看了维护计划,一个维护计划可能会创建多个作业,多个计划.你还简单地看了SSIS子系统,并查看了维护计划作 ...
- python内置模块(3)
博主所有python文章均为python3.5.1环境. 目录: 1.collections 2.subprocess 3.configparser 4.XML 5.shutil 一. collect ...
- ActiveMQ学习(一)——MQ的基本概念
1) 队列管理器 队列管理器是MQ系统中最上层的一个概念,由它为我们提供基于队列的消息服务. 2) 消息 在MQ中,我们把应用程序交由MQ传输的数据定义为消息,我们可以定义消息的内容并对消息进行广义的 ...
- R语言简单实现聚类分析计算与分析(基于系统聚类法)
聚类分析计算与分析(基于系统聚类法) 下面以一个具体的例子来实现实证分析.2008年我国其中31个省.市和自治区的农村居民家庭平均每人全年消费性支出. 根据原始数据对我国省份进行归类统计. 原始数据如 ...
- mysql学习笔记 第九天
order by ,limit 和where子查询的使用 order by: order by 列名1,[列名2],[列名3]...(结果先按列1进行排序,在列1的相同的情况下,再按照列2的排序,以此 ...
- python pip 升级每个包
pip本身不自带升级所有包的功能, 但可以通过下面的脚本实现. import pip from subprocess import call for dist in pip.get_installed ...
- php学习笔记:foreach循环访问关联数组里的值
foreach循环可以将数组里的所有值都访问到,下面我们展示下,用foreach循环访问关联数组里的值. 例如: $fruit=array('apple'=>"苹果",'ba ...