1. 程式人生 > >spring boot 獲取專案全部URL

spring boot 獲取專案全部URL

spring boot 專案在做URL許可權控制的時候需要獲得全部的URL,一個一個去controller中找費時費力。而且有的許可權點的命名和URL有一定的對應關係。如果能用程式獲得全部URL,將會省去很多事。下面就介紹一種獲取URL的方法。在專案中新增如下Controller,請求/getAllUrl,即可看到專案所有的URL。當然也可以根據專案將URL寫入資料庫或寫入配置檔案。


import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller
; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.context.WebApplicationContext; 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.util.ArrayList; import java.util.List; import java.util.Map; import java.util.Set; @Controller @RequestMapping("/*") public class UrlController { @Autowired WebApplicationContext applicationContext;
@GetMapping("/getAllUrl") @ResponseBody public List<String> getAllUrl(){ RequestMappingHandlerMapping mapping = applicationContext.getBean(RequestMappingHandlerMapping.class); //獲取url與類和方法的對應資訊 Map<RequestMappingInfo,HandlerMethod> map = mapping.getHandlerMethods(); List<String> urlList = new ArrayList<>(); for (RequestMappingInfo info : map.keySet()){ //獲取url的Set集合,一個方法可能對應多個url Set<String> patterns = info.getPatternsCondition().getPatterns(); for (String url : patterns){ urlList.add(url); } } return urlList; } }