成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專(zhuān)欄INFORMATION COLUMN

spring獲取controller方法中自定義注解的信息

null1145 / 1296人閱讀

摘要:序本文主要聊一下如何在容器啟動(dòng)時(shí),獲取有自定義注解的方法信息。主要用到這個(gè)方法通過(guò)這個(gè)就可以獲取具體的請(qǐng)求的方法,然后利用反射去判斷是否有標(biāo)注自己所需要的注解。啟動(dòng)時(shí)處理實(shí)現(xiàn)接口,在在中去處理這樣就大功告成了

本文主要聊一下如何在spring容器啟動(dòng)時(shí),獲取有自定義注解的方法信息。

RequestMappingHandlerMapping

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();
    
    //....
}

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 Map getHandlerMethods() {
        this.mappingRegistry.acquireReadLock();
        try {
            return Collections.unmodifiableMap(this.mappingRegistry.getMappings());
        }
        finally {
            this.mappingRegistry.releaseReadLock();
        }
    }

主要用到這個(gè)getHandlerMethods方法

Map
for(Map.Entry 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);
            //......
        }

通過(guò)這個(gè)HandlerMethod就可以獲取具體的請(qǐng)求的方法,然后利用反射去判斷是否有標(biāo)注自己所需要的注解。

啟動(dòng)時(shí)處理

實(shí)現(xiàn)ApplicationListener接口,在

@Override
    public void onApplicationEvent(ContextRefreshedEvent contextRefreshedEvent) {
        //.......
    }

在onApplicationEvent中去處理
這樣就大功告成了

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/67950.html

相關(guān)文章

  • SpringMVC數(shù)據(jù)轉(zhuǎn)換

    摘要:數(shù)據(jù)綁定負(fù)責(zé)將中的信息以一定的方式轉(zhuǎn)換并綁定到處理方法的參數(shù)上。整個(gè)過(guò)程的處理核心是由完成。數(shù)據(jù)轉(zhuǎn)換在語(yǔ)言中,在包中提供了一個(gè)接口來(lái)進(jìn)行數(shù)據(jù)轉(zhuǎn)換,的核心功能是將一個(gè)轉(zhuǎn)換為一個(gè)對(duì)象。 數(shù)據(jù)綁定 SpringMVC負(fù)責(zé)將request中的信息以一定的方式轉(zhuǎn)換并綁定到處理方法的參數(shù)上。整個(gè)過(guò)程的處理核心是由DataBinder完成。轉(zhuǎn)換流程如下:1.DataBinder從ServletReq...

    DrizzleX 評(píng)論0 收藏0
  • SpringMVC【校驗(yàn)器、統(tǒng)一處理異常、RESTful、攔截器】

    摘要:只要有一個(gè)攔截器不放行,不能執(zhí)行完成號(hào)不放行和號(hào)不放行測(cè)試結(jié)果總結(jié)只有前邊的攔截器方法放行,下邊的攔截器的才執(zhí)行。至于他們的攔截器鏈的調(diào)用順序,和的是沒(méi)有差別的。 前言 本博文主要講解的知識(shí)點(diǎn)如下: 校驗(yàn)器 統(tǒng)一處理異常 RESTful 攔截器 Validation 在我們的Struts2中,我們是繼承ActionSupport來(lái)實(shí)現(xiàn)校驗(yàn)的...它有兩種方式來(lái)實(shí)現(xiàn)校驗(yàn)的功能 手寫(xiě)...

    marser 評(píng)論0 收藏0
  • Spring Boot中自定義注解+AOP實(shí)現(xiàn)主備庫(kù)切換

    摘要:示例代碼如下添加的設(shè)置默認(rèn)的配置對(duì)應(yīng)的是原來(lái)的如何使用注解從主庫(kù)到備庫(kù)的切換 摘要: 本篇文章的場(chǎng)景是做調(diào)度中心和監(jiān)控中心時(shí)的需求,后端使用TDDL實(shí)現(xiàn)分表分庫(kù),需求:實(shí)現(xiàn)關(guān)鍵業(yè)務(wù)的查詢監(jiān)控,當(dāng)用Mybatis查詢數(shù)據(jù)時(shí)需要從主庫(kù)切換到備庫(kù)或者直接連到備庫(kù)上查詢,從而減小主庫(kù)的壓力,在本篇文章中主要記錄在Spring Boot中通過(guò)自定義注解結(jié)合AOP實(shí)現(xiàn)直接連接備庫(kù)查詢。 一.通過(guò)A...

    zhisheng 評(píng)論0 收藏0
  • 慕課網(wǎng)_《SpringBoot進(jìn)階之Web進(jìn)階》學(xué)習(xí)總結(jié)

    摘要:時(shí)間年月日星期日說(shuō)明本文部分內(nèi)容均來(lái)自慕課網(wǎng)。慕課網(wǎng)教學(xué)示例源碼個(gè)人學(xué)習(xí)源碼第一章課程介紹課程介紹本課程緊接著小時(shí)學(xué)會(huì)課程,請(qǐng)先看入門(mén)課。異常返回通知在連接點(diǎn)拋出異常后執(zhí)行。 時(shí)間:2017年3月19日星期日說(shuō)明:本文部分內(nèi)容均來(lái)自慕課網(wǎng)。@慕課網(wǎng):http://www.imooc.com教學(xué)示例源碼:https://github.com/zccodere/s...個(gè)人學(xué)習(xí)源碼:htt...

    lifefriend_007 評(píng)論0 收藏0
  • [Spring cloud 一步步實(shí)現(xiàn)廣告系統(tǒng)] 7. 中期總結(jié)回顧

    摘要:在前面的過(guò)程中,我們創(chuàng)建了個(gè)服務(wù)發(fā)現(xiàn)我們使用作為服務(wù)發(fā)現(xiàn)組件,學(xué)習(xí)了的使用。加依賴加注解改配置使用項(xiàng)目三部曲,我們可以快速添加一個(gè)新組件,并正常使用這個(gè)我沒(méi)有在項(xiàng)目中實(shí)現(xiàn),但是大家可以和一樣,三部曲搞定。 在前面的過(guò)程中,我們創(chuàng)建了4個(gè)project: 服務(wù)發(fā)現(xiàn) 我們使用Eureka 作為服務(wù)發(fā)現(xiàn)組件,學(xué)習(xí)了Eureka Server,Eureka Client的使用。 Eureka...

    cnsworder 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<