本文主要聊一下如何在spring容器启动时,获取有自定义注解的方法信息。
spring-webmvc-4.3.10.RELEASE-sources.jar!/org/springframework/web/servlet/mvc/method/annotation/RequestMappingHandlerMapping.java
public class RequestMappingHandlerMapping extends RequestMappingInfoHandlerMapping
implements MatchableHandlerMapping, EmbeddedValueResolverAware {
private boolean useSuffixPatternMatch = true;
private boolean useRegisteredSuffixPatternMatch = false;
private boolean useTrailingSlashMatch = true;
private ContentNegotiationManager contentNegotiationManager = new ContentNegotiationManager();
private StringValueResolver embeddedValueResolver;
private RequestMappingInfo.BuilderConfiguration config = new RequestMappingInfo.BuilderConfiguration();
//....
}
for(Map.Entry<RequestMappingInfo,HandlerMethod> entry : urlMethodMapping.entrySet()){
RequestMappingInfo info = entry.getKey();
HandlerMethod handlerMethod = entry.getValue();
Method method = handlerMethod.getMethod();
if(!method.isAnnotationPresent(DemoAnno.class)){
continue;
}
DemoAnno demoAnno = method.getAnnotation(DemoAnno.class);
//......
}
通过这个HandlerMethod就可以获取具体的请求的方法,然后利用反射去判断是否有标注自己所需要的注解。
实现ApplicationListener接口,在
@Override
public void onApplicationEvent(ContextRefreshedEvent contextRefreshedEvent) {
//.......
}
在onApplicationEvent中去处理 这样就大功告成了