package com.hmdp.spring;
import com.hmdp.annotation.MyAnnotation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
import org.springframework.web.method.HandlerMethod;
import org.springframework.web.servlet.mvc.condition.PatternsRequestCondition;
import org.springframework.web.servlet.mvc.method.RequestMappingInfo;
import org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping;
import javax.servlet.http.HttpServletRequest;
import java.lang.reflect.Method;
import java.util.Map;
import java.util.Set;
/**
* @Author: ldj
* @Date: 2023/06/21/9:28
* @Description: 获取请求信息
*/
public class RequestAccessControl {
@Autowired
private ApplicationContext applicationContext;
@Autowired
private HttpServletRequest request;
public void doStarter(){
RequestMappingHandlerMapping handlerMapping = applicationContext.getBean(RequestMappingHandlerMapping.class);
Map<RequestMappingInfo, HandlerMethod> requestHandlerMap = handlerMapping.getHandlerMethods();
for (Map.Entry<RequestMappingInfo, HandlerMethod> entry : requestHandlerMap.entrySet()) {
//1.
RequestMappingInfo mappingInfo = entry.getKey();
System.out.println(mappingInfo.getName());
//请求路径是否匹配?
PatternsRequestCondition patternsCondition = mappingInfo.getPatternsCondition();
Set<String> patterns = patternsCondition.getPatterns();
System.out.println(patterns);
//2.
HandlerMethod handlerMethod = entry.getValue();
//反射获取类上的注解信息
Class<?> clazz = handlerMethod.getMethod().getDeclaringClass();
if (clazz.isAnnotationPresent(MyAnnotation.class)) {
MyAnnotation ClassAnnotation = clazz.getAnnotation(MyAnnotation.class);
System.out.println(ClassAnnotation.permission());
}
//反射获取方法上的注解信息
Method method = handlerMethod.getMethod();
if (method.isAnnotationPresent(MyAnnotation.class)) {
MyAnnotation MethodAnnotation = method.getAnnotation(MyAnnotation.class);
System.out.println(MethodAnnotation.value());
}
}
}
}
RequestMappingHandlerMapping
最新推荐文章于 2023-09-22 10:39:05 发布