摘要:序本文主要聊一下如何在容器啟動時,獲取有自定義注解的方法信息。主要用到這個方法通過這個就可以獲取具體的請求的方法,然后利用反射去判斷是否有標(biāo)注自己所需要的注解。啟動時處理實(shí)現(xiàn)接口,在在中去處理這樣就大功告成了
序
本文主要聊一下如何在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就可以獲取具體的請求的方法,然后利用反射去判斷是否有標(biāo)注自己所需要的注解。
實(shí)現(xiàn)ApplicationListener
@Override public void onApplicationEvent(ContextRefreshedEvent contextRefreshedEvent) { //....... }
在onApplicationEvent中去處理
這樣就大功告成了
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/67950.html
摘要:數(shù)據(jù)綁定負(fù)責(zé)將中的信息以一定的方式轉(zhuǎn)換并綁定到處理方法的參數(shù)上。整個過程的處理核心是由完成。數(shù)據(jù)轉(zhuǎn)換在語言中,在包中提供了一個接口來進(jìn)行數(shù)據(jù)轉(zhuǎn)換,的核心功能是將一個轉(zhuǎn)換為一個對象。 數(shù)據(jù)綁定 SpringMVC負(fù)責(zé)將request中的信息以一定的方式轉(zhuǎn)換并綁定到處理方法的參數(shù)上。整個過程的處理核心是由DataBinder完成。轉(zhuǎn)換流程如下:1.DataBinder從ServletReq...
摘要:只要有一個攔截器不放行,不能執(zhí)行完成號不放行和號不放行測試結(jié)果總結(jié)只有前邊的攔截器方法放行,下邊的攔截器的才執(zhí)行。至于他們的攔截器鏈的調(diào)用順序,和的是沒有差別的。 前言 本博文主要講解的知識點(diǎn)如下: 校驗(yàn)器 統(tǒng)一處理異常 RESTful 攔截器 Validation 在我們的Struts2中,我們是繼承ActionSupport來實(shí)現(xiàn)校驗(yàn)的...它有兩種方式來實(shí)現(xiàn)校驗(yàn)的功能 手寫...
摘要:示例代碼如下添加的設(shè)置默認(rèn)的配置對應(yīng)的是原來的如何使用注解從主庫到備庫的切換 摘要: 本篇文章的場景是做調(diào)度中心和監(jiān)控中心時的需求,后端使用TDDL實(shí)現(xiàn)分表分庫,需求:實(shí)現(xiàn)關(guān)鍵業(yè)務(wù)的查詢監(jiān)控,當(dāng)用Mybatis查詢數(shù)據(jù)時需要從主庫切換到備庫或者直接連到備庫上查詢,從而減小主庫的壓力,在本篇文章中主要記錄在Spring Boot中通過自定義注解結(jié)合AOP實(shí)現(xiàn)直接連接備庫查詢。 一.通過A...
摘要:時間年月日星期日說明本文部分內(nèi)容均來自慕課網(wǎng)。慕課網(wǎng)教學(xué)示例源碼個人學(xué)習(xí)源碼第一章課程介紹課程介紹本課程緊接著小時學(xué)會課程,請先看入門課。異常返回通知在連接點(diǎn)拋出異常后執(zhí)行。 時間:2017年3月19日星期日說明:本文部分內(nèi)容均來自慕課網(wǎng)。@慕課網(wǎng):http://www.imooc.com教學(xué)示例源碼:https://github.com/zccodere/s...個人學(xué)習(xí)源碼:htt...
摘要:在前面的過程中,我們創(chuàng)建了個服務(wù)發(fā)現(xiàn)我們使用作為服務(wù)發(fā)現(xiàn)組件,學(xué)習(xí)了的使用。加依賴加注解改配置使用項(xiàng)目三部曲,我們可以快速添加一個新組件,并正常使用這個我沒有在項(xiàng)目中實(shí)現(xiàn),但是大家可以和一樣,三部曲搞定。 在前面的過程中,我們創(chuàng)建了4個project: 服務(wù)發(fā)現(xiàn) 我們使用Eureka 作為服務(wù)發(fā)現(xiàn)組件,學(xué)習(xí)了Eureka Server,Eureka Client的使用。 Eureka...
閱讀 3499·2023-04-25 15:52
閱讀 581·2021-11-19 09:40
閱讀 2572·2021-09-26 09:47
閱讀 1023·2021-09-22 15:17
閱讀 3548·2021-08-13 13:25
閱讀 2200·2019-08-30 15:56
閱讀 3460·2019-08-30 13:56
閱讀 2095·2019-08-30 11:27