package com.xmzs.common.security.handler; import cn.hutool.core.util.ReUtil; import com.xmzs.common.core.utils.SpringUtils; import lombok.Data; import org.springframework.beans.factory.InitializingBean; 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.*; import java.util.regex.Pattern; /** * 获取所有Url配置 * * @author Lion Li */ @Data public class AllUrlHandler implements InitializingBean { private static final Pattern PATTERN = Pattern.compile("\\{(.*?)\\}"); private List urls = new ArrayList<>(); @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); } }