打印SpringBoot中所有接口
在Application.java中添加以下代码:
import org.springframework.context.ApplicationContext; import org.springframework.web.method.HandlerMethod; import org.springframework.web.servlet.mvc.method.RequestMappingInfo; import org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping; import java.lang.annotation.Annotation; import cn.xx.annotation.ControllerEndpoint;//自定义写操作方式文字的注解 import io.swagger.annotations.ApiOperation; import java.util.Map; public static void methodName(ApplicationContext applicationContext){{ RequestMappingHandlerMapping requestMappingHandlerMapping = applicationContext.getBean(RequestMappingHandlerMapping.class); //获取url与类和方法的对应信息 Map<RequestMappingInfo, HandlerMethod> map = requestMappingHandlerMapping.getHandlerMethods(); for (Map.Entry<RequestMappingInfo, HandlerMethod> entry : map.entrySet()) { RequestMappingInfo reqInfo = entry.getKey(); HandlerMethod handlerMethod = entry.getValue(); String path=reqInfo.getPatternsCondition().getPatterns().iterator().next(); String methodRemark=""; Annotation[] parentAnnotations = handlerMethod.getMethod().getAnnotations(); for (Annotation annotation : parentAnnotations) { if (annotation instanceof ControllerEndpoint) { ControllerEndpoint api = (ControllerEndpoint) annotation; methodRemark=api.operation(); }else if(annotation instanceof ApiOperation){ ApiOperation api = (ApiOperation) annotation; methodRemark=api.value(); } } String method=""; if(reqInfo.getMethodsCondition().getMethods().iterator().hasNext()) { method=reqInfo.getMethodsCondition().getMethods().iterator().next().name(); } System.out.println(path+"\t"+method+"\t"+ handlerMethod.getBeanType().getName()+"\t"+methodRemark); } } }2.使用
methodName(new SpringApplicationBuilder(XX.class).run(args));
3.把控制台输出复制到excel
4.把excel变成json,使用easyexcel
package com.example.easyexcel; import com.alibaba.excel.EasyExcel; import com.alibaba.excel.ExcelReader; import com.alibaba.excel.context.AnalysisContext; import com.alibaba.excel.event.AnalysisEventListener; import com.alibaba.excel.read.builder.ExcelReaderBuilder; import com.alibaba.excel.read.metadata.ReadSheet; import com.alibaba.excel.support.ExcelTypeEnum; import com.google.gson.Gson; import com.google.gson.reflect.TypeToken; import lombok.Data; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import java.io.*; import java.nio.Buffer; import java.util.ArrayList; import java.util.List; import java.util.Map; @SpringBootApplication public class EasyexcelApplication { public static void main(String[] args) throws Exception { { //SpringApplication.run(EasyexcelApplication.class, args); String file="/Users/xx/接口.xlsx"; String writePath="/Users/xx/easyexcel/out/interface.json"; PrintWriter pw=new PrintWriter(new OutputStreamWriter(new FileOutputStream(writePath),"UTF-8")); List<MethodOperation> rst=new ArrayList<>(); ExcelReaderBuilder readerBuilder=EasyExcel.read(file); //获取文件对象 ExcelReader er=readerBuilder.file(file).build(); List<ReadSheet> readSheets = er.excelExecutor().sheetList(); for(ReadSheet rs:readSheets) { ExcelReaderBuilder curBuild=EasyExcel.read(file); //指定sheet curBuild.sheet(rs.getSheetName()); //自动关闭输入流 curBuild.autoCloseStream(true); //设置excel格式 curBuild.excelType(ExcelTypeEnum.XLSX); //readerBuilder.excelType(ExcelTypeEnum.XLS); //注册监听器,进行数据解析 curBuild.registerReadListener(new AnalysisEventListener() { @Override public void invoke(Object o, AnalysisContext analysisContext) { //读取一行数据回调 System.out.println(o); Map<Integer,String> map=(Map)o; MethodOperation mo=new MethodOperation(); mo.setMethod(map.get(1)); mo.setSystem(rs.getSheetName()); String url=map.get(0); int idx=url.indexOf("/{"); if(idx!=-1){ url=url.substring(0,idx); } mo.setUrl(url); mo.setOperName(map.get(3)); rst.add(mo); } @Override public void doAfterAllAnalysed(AnalysisContext analysisContext) { //数据读取完毕 //System.out.println("数据读取完毕"); } }); //创建读取器 //ExcelReader reader = readerBuilder.build(); //读取数据 //reader.readAll(); curBuild.build().read(rs); //er.read(rs); } //读取完毕 er.finish(); pw.println("["); for(int i=0;i<rst.size();i++) { MethodOperation mo=rst.get(i); pw.print(new Gson().toJson(mo) ); if(i!=rst.size()-1) { pw.println(","); }else{ pw.println(); } } pw.println("]"); pw.close(); StringBuffer json=new StringBuffer(); String tmp=null; BufferedReader br=new BufferedReader(new InputStreamReader(new FileInputStream(writePath),"UTF-8")); while((tmp=br.readLine())!=null){ json.append(tmp); } br.close(); List<MethodOperation> methods=new Gson().fromJson(json.toString(),new TypeToken<ArrayList<MethodOperation>>(){}.getType()); System.out.println(methods.size()); for(MethodOperation mo:methods){ try { if (mo.getUrl().contains("getAllType")) { System.out.println("in"); } }catch(Exception e){ e.printStackTrace(); } } } } @Data static class MethodOperation{ private String system; private String url; private String method; private String operName; } }
引用pom.xml
<dependency> <groupId>com.alibaba</groupId> <artifactId>easyexcel</artifactId> <version>3.3.2</version> </dependency> <!-- lombok --> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <scope>provided</scope> </dependency> <dependency> <groupId>com.google.code.gson</groupId> <artifactId>gson</artifactId> <version>2.7</version> </dependency>
相关阅读
评论:
↓ 广告开始-头部带绿为生活 ↓
↑ 广告结束-尾部支持多点击 ↑