打印 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在处理请求过程中出现异常信息交由异常处理器进行处理,自定义异常 ...
随机推荐
- Hadoop第13周练习—HBase作业
1 :举例子说明HBase相对简单 1.1 1.2 回答 2 :设计HBase存储站内短信 2.1 2.2 回答 书面作业1:举例子说明HBase相对简单 请举出一例子,使 ...
- Python内置模块(2)
这一部分主要介绍sys.os.hashlib和re模块.其中的re模块介绍得非常详细,是本部分的重点! 均为python3.5.1环境. 一.sys模块 sys模块涉及的主要是与python解释器相关 ...
- CentOS6.5菜鸟之旅:中文编辑器忍痛放弃Sublime
一.前言 Windows下习惯使用Sublime作为编辑器,谁知道Linux下的Sublime是如此不照顾中文用户,找了N久终于找到一个蹩脚的解决方案,于是我毅然决然地加入Vim的阵营. 二.苦苦追寻 ...
- Angular系列------AngularJS快速开始(转载)
Hello World! 开始学习AngularJS的一个好方法是创建经典应用程序“Hello World!”: 使用您喜爱的文本编辑器,创建一个HTML文件,例如:helloworld.html. ...
- 【推荐】iOS汉字转拼音第三方库
PinYin4Objc是一个在git汉字转拼音的开源库,支持简体和繁体中文.效率POAPinyin等其他库要高,转换库也完整下面简单介绍 实现原理 使用unicode_to_hanyu_pinyin. ...
- [Solution] 一步一步WCF(2) 终结点Endpoint
繁忙的一天又一天,不管其他,先继续WCF吧. Endpoint包含地址,绑定,契约三要素.WCF作为一个Windows平台下最大的通信框架.通过终结点承载了所有通信功能.所以终结点的作用将非常重要. ...
- 用eclipse加载别人的工程,报错Target runtime com.genuitec.runtime.generic.jee60 is not defined
系统加载工程后,报错Target runtime com.genuitec.runtime.generic.jee60 is not defined,在发布工程的同事电脑上正常 新导入的工程,出问题很 ...
- jquery选择器(原创)
jquery选择器大方向可以分为这样: 下面我们先来看看基本选择器总的CSS选择器: 1.标签选择器: $("element") 其中,参数element,表示待查找的HTML标记 ...
- 通过微软的cors类库,让ASP.NET Web API 支持 CORS
前言:因为公司项目需要搭建一个Web API 的后端,用来传输一些数据以及文件,之前有听过Web API的相关说明,但是真正实现的时候,感觉还是需要挺多知识的,正好今天有空,整理一下这周关于解决COR ...
- 脊柱外科病人资料管理系统的界面设计分析(2)--JOA评分记录的实现
在上篇随笔<脊柱外科病人资料管理系统的界面设计分析>中介绍了一些常用的界面设计方面的内容,本篇继续上一篇,介绍脊柱外科病人管理系统的JOA评分记录模块的界面设计以及实现方面的内容. JOA ...