采用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的更多相关文章

  1. 获取SpringMVC中所有RequestMapping映射URL信息

    SpringMVC启动的时候,会把接口信息收集在RequestMappingHandlerMapping中,故可以通过这个类,拿到全部的映射信息,Sample代码段如下: @Autowired pri ...

  2. 在springmvc中,获取Connection接口

    ServletContext context = request.getSession().getServletContext();WebApplicationContext wac = WebApp ...

  3. SpringMVC中url映射到Controller

    SpringMVC也是一种基于请求驱动的WEB框架,并且使用了前端控制器的设计模式.前端控制器就是DispatcherServlet控制器,只要满足web.xml文件中的[url-pattern]的规 ...

  4. 如何在SpringMVC中使用REST风格的url

    如何在SpringMVC中使用REST风格的url 1.url写法: get:/restUrl/{id} post:/restUrl delete:/restUrl/{id} put:/restUrl ...

  5. SpringMVC 中的Interceptor 拦截器

    1.配置拦截器 在springMVC.xml配置文件增加: <mvc:interceptors>  <!-- 日志拦截器 -->  <mvc:interceptor> ...

  6. SpringMVC中@Controller和@RequestMapping用法和其他常用注解

    一.简介 在SpringMVC 中,控制器Controller 负责处理由DispatcherServlet 分发的请求,它把用户请求的数据经过业务处理层处理之后封装成一个Model ,然后再把该Mo ...

  7. 【SpringMVC学习11】SpringMVC中的拦截器

    Springmvc的处理器拦截器类似于Servlet 开发中的过滤器Filter,用于对处理器进行预处理和后处理.本文主要总结一下springmvc中拦截器是如何定义的,以及测试拦截器的执行情况和使用 ...

  8. (转)SpringMVC学习(十二)——SpringMVC中的拦截器

    http://blog.csdn.net/yerenyuan_pku/article/details/72567761 SpringMVC的处理器拦截器类似于Servlet开发中的过滤器Filter, ...

  9. (转)SpringMVC学习(八)——SpringMVC中的异常处理器

    http://blog.csdn.net/yerenyuan_pku/article/details/72511891 SpringMVC在处理请求过程中出现异常信息交由异常处理器进行处理,自定义异常 ...

随机推荐

  1. LoRaWAN协议(四)--入网方式概述

    前言 在LoRaWAN中,node最终和服务器能够正常数据交互,需要先入网,入网的本质,也就是获得一些通信相关的参数,有以下几个: NwkSKey AppSKey DevAddr DevEui 其中 ...

  2. [转载]在线文档预览方案-Office Web Apps

    最近在做项目时,要在手机端实现在线文档预览的功能.于是百度了一下实现方案,大致是将文档转换成pdf,然后在通过插件实现预览.这些方案没有具体实现代码,也没有在线预览的地址,再加上项目时间紧迫.只能考虑 ...

  3. Robot Framework自动化测试(四)--- 分层思想

    谈到Robot  Framework 分层的思想,就不得不提“关键字驱动”. 关键字驱动: 通过调用的关键字不同,从而引起测试结果的不同. 在上一节的selenium API 中所介绍的方法其实就是关 ...

  4. 登陆mysql时提示异常的解决方法

    [root@host2 ~]# mysql -uroot -p Enter password: ERROR (HY000): Can't connect to local MySQL server t ...

  5. SpringMVC——类型转换和格式化、数据校验、客户端显示错误消息

    在介绍类型转换和格式化之前,我首先来介绍 <mvc:annotation-driven />. 需要导入的 schema: xmlns:mvc="http://www.sprin ...

  6. Github教程(1)

    Git基本命令 git diff:查看工作树,暂存区,最新提交之间的差别 举例: 在README.MD中增加一行 ## This is the subtitle 执行git diff 命令,查看当前工 ...

  7. Mybatis 示例之 SelectKey

    SelectKey在Mybatis中是为了解决Insert数据时不支持主键自动生成的问题,他可以很随意的设置生成主键的方式. 不管SelectKey有多好,尽量不要遇到这种情况吧,毕竟很麻烦. sel ...

  8. 字符串hash - POJ 3461 Oulipo

    Oulipo Problem's Link ---------------------------------------------------------------------------- M ...

  9. (二)Protobuf的C#使用

    [转]http://blog.csdn.net/shantsc/article/details/50729402 protobuf  c#版本分成两个版本,一个是protobuf-net,另一个是pr ...

  10. Python入门笔记(19):Python函数(2):函数/方法装饰器

    一.装饰器(decorators) 装饰器的语法以@开头,接着是装饰器函数的名字.可选参数. 紧跟装饰器声明的是被装饰的函数和被装饰的函数的可选参数,如下: @decorator(dec_opt_ar ...