diff --git a/ruoyi-common/ruoyi-common-security/src/main/java/org/ruoyi/common/security/handler/AllUrlHandler.java b/ruoyi-common/ruoyi-common-security/src/main/java/org/ruoyi/common/security/handler/AllUrlHandler.java index 4be94b26..6537d392 100644 --- a/ruoyi-common/ruoyi-common-security/src/main/java/org/ruoyi/common/security/handler/AllUrlHandler.java +++ b/ruoyi-common/ruoyi-common-security/src/main/java/org/ruoyi/common/security/handler/AllUrlHandler.java @@ -10,6 +10,7 @@ import org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandl import java.util.*; import java.util.regex.Pattern; +import java.util.stream.Collectors; /** * 获取所有Url配置 @@ -19,23 +20,24 @@ import java.util.regex.Pattern; @Data public class AllUrlHandler implements InitializingBean { - private static final Pattern PATTERN = Pattern.compile("\\{(.*?)\\}"); - - private List urls = new ArrayList<>(); + private List urls = new ArrayList<>(256); @Override public void afterPropertiesSet() { - Set set = new HashSet<>(); - RequestMappingHandlerMapping mapping = SpringUtils.getBean("requestMappingHandlerMapping", RequestMappingHandlerMapping.class); - Map map = mapping.getHandlerMethods(); - map.keySet().forEach(info -> { - // 获取注解上边的 path 替代 path variable 为 * - if(info.getPathPatternsCondition()!=null){ - Objects.requireNonNull(info.getPathPatternsCondition().getPatterns()) - .forEach(url -> set.add(ReUtil.replaceAll(url.getPatternString(), PATTERN, "*"))); - } - }); - urls.addAll(set); + String name = "requestMappingHandlerMapping"; + RequestMappingHandlerMapping mapping = SpringUtils.getBean(name, RequestMappingHandlerMapping.class); + + Map handlerMethods = mapping.getHandlerMethods(); + + Pattern pattern = Pattern.compile("\\{(.*?)\\}"); + + Set handlerSet = handlerMethods.keySet().stream() + .flatMap(info -> info.getPatternsCondition().getPatterns().stream()) + .collect(Collectors.toSet()); + + // 获取注解上边的 path 替代 path variable 为 * + handlerSet.stream().map(path -> ReUtil.replaceAll(path, pattern, "*")) + .forEach(item -> urls.add(item)); } }