摘要:序本文主要聊一下如何在容器启动时,获取有自定义注解的方法信息。主要用到这个方法通过这个就可以获取具体的请求的方法,然后利用反射去判断是否有标注自己所需要的注解。启动时处理实现接口,在在中去处理这样就大功告成了
序
本文主要聊一下如何在spring容器启动时,获取有自定义注解的方法信息。
RequestMappingHandlerMappingspring-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(); //.... }
getHandlerMethods
spring-webmvc-4.3.10.RELEASE-sources.jar!/org/springframework/web/servlet/handler/AbstractHandlerMethodMapping.java
/** * Return a (read-only) map with all mappings and HandlerMethod"s. */ public MapgetHandlerMethods() { this.mappingRegistry.acquireReadLock(); try { return Collections.unmodifiableMap(this.mappingRegistry.getMappings()); } finally { this.mappingRegistry.releaseReadLock(); } }
Map主要用到这个getHandlerMethods方法
for(Map.Entryentry : 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中去处理
这样就大功告成了
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/67950.html
摘要:数据绑定负责将中的信息以一定的方式转换并绑定到处理方法的参数上。整个过程的处理核心是由完成。数据转换在语言中,在包中提供了一个接口来进行数据转换,的核心功能是将一个转换为一个对象。 数据绑定 SpringMVC负责将request中的信息以一定的方式转换并绑定到处理方法的参数上。整个过程的处理核心是由DataBinder完成。转换流程如下:1.DataBinder从ServletReq...
摘要:只要有一个拦截器不放行,不能执行完成号不放行和号不放行测试结果总结只有前边的拦截器方法放行,下边的拦截器的才执行。至于他们的拦截器链的调用顺序,和的是没有差别的。 前言 本博文主要讲解的知识点如下: 校验器 统一处理异常 RESTful 拦截器 Validation 在我们的Struts2中,我们是继承ActionSupport来实现校验的...它有两种方式来实现校验的功能 手写...
摘要:示例代码如下添加的设置默认的配置对应的是原来的如何使用注解从主库到备库的切换 摘要: 本篇文章的场景是做调度中心和监控中心时的需求,后端使用TDDL实现分表分库,需求:实现关键业务的查询监控,当用Mybatis查询数据时需要从主库切换到备库或者直接连到备库上查询,从而减小主库的压力,在本篇文章中主要记录在Spring Boot中通过自定义注解结合AOP实现直接连接备库查询。 一.通过A...
摘要:时间年月日星期日说明本文部分内容均来自慕课网。慕课网教学示例源码个人学习源码第一章课程介绍课程介绍本课程紧接着小时学会课程,请先看入门课。异常返回通知在连接点抛出异常后执行。 时间:2017年3月19日星期日说明:本文部分内容均来自慕课网。@慕课网:http://www.imooc.com教学示例源码:https://github.com/zccodere/s...个人学习源码:htt...
摘要:在前面的过程中,我们创建了个服务发现我们使用作为服务发现组件,学习了的使用。加依赖加注解改配置使用项目三部曲,我们可以快速添加一个新组件,并正常使用这个我没有在项目中实现,但是大家可以和一样,三部曲搞定。 在前面的过程中,我们创建了4个project: 服务发现 我们使用Eureka 作为服务发现组件,学习了Eureka Server,Eureka Client的使用。 Eureka...
阅读 3498·2023-04-25 15:52
阅读 580·2021-11-19 09:40
阅读 2570·2021-09-26 09:47
阅读 1022·2021-09-22 15:17
阅读 3547·2021-08-13 13:25
阅读 2198·2019-08-30 15:56
阅读 3459·2019-08-30 13:56
阅读 2094·2019-08-30 11:27