zoukankan      html  css  js  c++  java
  • 打印 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.结果

    image

     

     

     

    4.延伸: 打印出符合markdown语法的表格

    改写testUrl()

    @Test
    	public void testUrls(){
    		System.out.println("------------以下文本复制到符合markdown语法的编辑器中------------
    
    ");
    		
    		Map<RequestMappingInfo, HandlerMethod> handlerMethods =handlerMapping
    				.getHandlerMethods();
    		StringBuilder sb=new StringBuilder();
    		sb.append("[MSA系统][1]").append("
    ");
    		sb.append("| 序号 | 类名 | 方法名  | URI |说明|").append("
    ");
    		sb.append("| :-----:|:----|:----|:----| :----|").append("
    ");
    		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("|
    ");
    		}    
    		sb.append("![MSA测量系统][2]").append("
    
    ");
    		sb.append("[1]:http://baike.baidu.com/link?url=xTbrqN9R1f3b1nayzmLNlWRIV7qP3qg3g50ig14g68kPXIrcrgymGzniaR8Ay7g9kzLkYgPeUcHR_YxgTMESHa").append("
    ");
    		sb.append("[2]:http:////img12.360buyimg.com/n0/jfs/t703/314/1199846466/213652/541cad01/5527d639N36f38009.jpg").append("
    ");
    		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中

    image

  • 相关阅读:
    iOS 各种编译错误汇总
    Reveal查看任意app的高级技巧
    PCH in Xcode 6
    iOS开发之工具篇-20个可以帮你简化移动app开发流程的工具
    UICollectionViewController xcode6.1 自定义Cell
    Xcode6.1 Prefix.pch添加方式
    最近开始研究php的缓存技术,来个系统自带的OPcache
    今天练手了下mysqlbinlog,标记下
    写了个数组多个数组合并返回的是不重复的数组
    ngnix配置thinkphp5隐藏index.php的方法亲测有效
  • 原文地址:https://www.cnblogs.com/qq-757617012/p/5411921.html
Copyright © 2011-2022 走看看