原文链接大佬提供了两种方法,这里使用了其中一种简单的,内容如下
业务场景自己想,只分享技术实现。下面的演示由于我为了方便,直接在公司项目中写的,所以一些敏感信息专有名词我要注释,望谅解。
首先我们都知道,Spring的IOC机制,所有的接口和service都存在一个map容器,通过BeanFactory和ApplicationContext可以拿。那么我们可以从这个开刀.
(1)隆重介绍WebApplicationContext 全局接口,属于ApplicationContext的一个儿子,它的作用很多,但是今天!在这里!它只用来获取每个Controller里面的全部public接口~
(2)直接上代码,直接写在某个Service或者Controller都行,写在哪都行:
@Autowired
WebApplicationContext applicationContext;
@GetMapping("/getParam")
public String getParam(){
RequestMappingHandlerMapping mapping = applicationContext.getBean(RequestMappingHandlerMapping.class);
// 拿到Handler适配器中的全部方法
Map<RequestMappingInfo, HandlerMethod> methodMap = mapping.getHandlerMethods();
List<String> urlList = new ArrayList<>();
for (RequestMappingInfo info : methodMap.keySet()){
Set<String> urlSet = info.getPatternsCondition().getPatterns();
// 获取全部请求方式
Set<RequestMethod> Methods = info.getMethodsCondition().getMethods();
System.out.println(Methods.toString());
for (String url : urlSet){
// 加上自己的域名和端口号,就可以直接调用
urlList.add("http://localhost:XXXX"+url);
}
}
return urlList.toString();
}
看下结果:
成功~