import lombok.extern.slf4j.Slf4j;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationListener;
import org.springframework.context.event.ContextRefreshedEvent;
import org.springframework.stereotype.Component;
import org.springframework.web.method.HandlerMethod;
import org.springframework.web.servlet.mvc.method.RequestMappingInfo;
import org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping;
import spring.cloud.oauth2.order.common.annotation.PassToken;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Set;
/**
* @auth: zhanghy
* @date: 2021/9/27 11:24
* @desc: 初始化基础数据及系统配置等
*/
@Slf4j
@Component
public class InitializeTheSet implements ApplicationListener<ContextRefreshedEvent> {
public static List<String> passUrl = new ArrayList<>();
@Override
public void onApplicationEvent(ContextRefreshedEvent arg0) {
ApplicationContext applicationContext = arg0.getApplicationContext();
RequestMappingHandlerMapping mapping = applicationContext.getBean(RequestMappingHandlerMapping.class);
//获取url与类和方法的对应信息
Map<RequestMappingInfo, HandlerMethod> map = mapping.getHandlerMethods();
for (RequestMappingInfo info : map.keySet()){
HandlerMethod handlerMethod = map.get(info);
PassToken methodAnnotation = handlerMethod.getMethodAnnotation(PassToken.class);
if(null != methodAnnotation){
//获取url的Set集合,一个方法可能对应多个url
Set<String> patterns = info.getPatternsCondition().getPatterns();
// 这里可获取请求方式 Get,Post等等
// Set<RequestMethod> methods = info.getMethodsCondition().getMethods();
for (String url : patterns){
passUrl.add(url);
}
}
}
}
}
最后修改于 2021-09-27 11:26:11
如果觉得我的文章对你有用,请随意赞赏
扫一扫支付

