原文链接大佬提供了两种方法,这里使用了其中一种简单的,内容如下

业务场景自己想,只分享技术实现。下面的演示由于我为了方便,直接在公司项目中写的,所以一些敏感信息专有名词我要注释,望谅解。

首先我们都知道,Spring的IOC机制,所有的接口和service都存在一个map容器,通过BeanFactory和ApplicationContext可以拿。那么我们可以从这个开刀.

(1)隆重介绍WebApplicationContext 全局接口,属于ApplicationContext的一个儿子,它的作用很多,但是今天!在这里!它只用来获取每个Controller里面的全部public接口~

java springboot RestTemplateUtils获取cookie springboot获取所有controller_端口号


(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();
    }

看下结果:

java springboot RestTemplateUtils获取cookie springboot获取所有controller_spring_02

成功~