亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Resttemplate中設(shè)置超時(shí)時(shí)長(zhǎng)方式

 更新時(shí)間:2021年10月29日 10:28:45   作者:dbave  
這篇文章主要介紹了Resttemplate中設(shè)置超時(shí)時(shí)長(zhǎng)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

Resttemplate 設(shè)置超時(shí)時(shí)長(zhǎng)

為了滿足調(diào)用需求,需要在使用Resttemplate發(fā)送請(qǐng)求時(shí),修改超時(shí)時(shí)長(zhǎng),網(wǎng)上給出了相關(guān)修改方法,代碼如下:

HttpComponentsClientHttpRequestFactory rf =
            ((HttpComponentsClientHttpRequestFactory) restTemplate.getRequestFactory());
        rf.setConnectTimeout(30000);
        rf.setReadTimeout(30000);

但是在運(yùn)行時(shí)報(bào)錯(cuò):

org.springframework.http.client.InterceptingClientHttpRequestFactory cannot be cast to org.springframework.http.client.HttpComponentsClientHttpRequestFactory

restTemplate.getRequestFactory()返回的類型無法轉(zhuǎn)換,通過搜索和調(diào)試發(fā)現(xiàn),在resttemplate中,必須在設(shè)置攔截器之前設(shè)置超時(shí),因?yàn)樵谠O(shè)置攔截器后無法設(shè)置超時(shí),而我在設(shè)置中并沒有設(shè)置過攔截器,應(yīng)該是被默認(rèn)構(gòu)造了

所以解決方法如下:

restTemplate.setInterceptors(null);
HttpComponentsClientHttpRequestFactory rf =
            ((HttpComponentsClientHttpRequestFactory) restTemplate.getRequestFactory());
rf.setConnectTimeout(30000);
rf.setReadTimeout(30000);

在設(shè)置超時(shí)之前,先將攔截器置空,這樣就不會(huì)出現(xiàn)無法設(shè)置的問題,之后驗(yàn)證通過。

查看resttemplate源碼后發(fā)現(xiàn),之所以會(huì)出現(xiàn)這樣的情況是因?yàn)樵趓esttemplate的源碼中,有這么一段代碼:

/**
 * Return the request interceptor that this accessor uses.
 */
public List<ClientHttpRequestInterceptor> getInterceptors() {
   return interceptors;
}
@Override
    public ClientHttpRequestFactory getRequestFactory() {
        ClientHttpRequestFactory delegate = super.getRequestFactory();
        if (!CollectionUtils.isEmpty(getInterceptors())) {
            return new InterceptingClientHttpRequestFactory(delegate, getInterceptors());
        }
        else {
            return delegate;
        }
    }

可以看到,在getRequestFactory()函數(shù)中,本來應(yīng)該是返回ClientHttpRequestFactory類型的,但是它會(huì)先校驗(yàn)一次是否含有interceptors攔截器,如果攔截器非空,則會(huì)返回包含攔截器的InterceptingClientHttpRequestFactory,這樣是無法轉(zhuǎn)換為HttpComponentsClientHttpRequestFactory類型的,因此在前面處理的時(shí)候?qū)r截器置空,這樣就可以返回不含攔截器的所需對(duì)象。

RestTemplate 設(shè)置超時(shí)時(shí)間注意點(diǎn)

1、保證系統(tǒng)中只有一個(gè)RestTemplate的配置;不然可能與你的預(yù)期不一致。

2、永遠(yuǎn)不要太相信自己寫的代碼;多打印日志才能真正知道調(diào)用時(shí)間;

long s = System.currentTimeMillis();
        try {
            responseEntity = restTemplate.exchange();
        } catch (Exception e) {
            long costTime = System.currentTimeMillis()-s;
            log.error("調(diào)用**服務(wù)異常,花費(fèi)時(shí)間:{},錯(cuò)誤:{}",costTime, e.getMessage(), e);
        }

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 使用maven打包生成doc文檔和打包源碼

    使用maven打包生成doc文檔和打包源碼

    這篇文章主要介紹了使用maven打包生成doc文檔和打包源碼的實(shí)現(xiàn),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • Spring?Boot?3.1中整合Spring?Security和Keycloak的方法

    Spring?Boot?3.1中整合Spring?Security和Keycloak的方法

    本文介紹在最新的SpringBoot3.1版本之下,如何將Keycloak和Spring?Security一起跑起來,文中結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友參考下吧
    2023-06-06
  • Spring MVC 請(qǐng)求參數(shù)綁定實(shí)現(xiàn)方式

    Spring MVC 請(qǐng)求參數(shù)綁定實(shí)現(xiàn)方式

    Spring MVC 是一個(gè)用于構(gòu)建 Web 應(yīng)用程序的框架,它提供了一種方便的方式來處理 HTTP 請(qǐng)求和響應(yīng),Spring MVC 提供了多種方式來實(shí)現(xiàn)請(qǐng)求參數(shù)綁定,本文結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友跟隨小編一起看看吧
    2023-09-09
  • spring?boot集成WebSocket日志實(shí)時(shí)輸出到web頁(yè)面

    spring?boot集成WebSocket日志實(shí)時(shí)輸出到web頁(yè)面

    這篇文章主要為大家介紹了spring?boot集成WebSocket日志實(shí)時(shí)輸出到web頁(yè)面展示的詳細(xì)操作,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步
    2022-03-03
  • SpringMVC對(duì)自定義controller入?yún)㈩A(yù)處理方式

    SpringMVC對(duì)自定義controller入?yún)㈩A(yù)處理方式

    這篇文章主要介紹了SpringMVC對(duì)自定義controller入?yún)㈩A(yù)處理方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-09-09
  • Java生成壓縮文件的實(shí)例代碼

    Java生成壓縮文件的實(shí)例代碼

    在工作過程中,需要將一個(gè)文件夾生成壓縮文件,然后提供給用戶下載。下面通過實(shí)例代碼給大家介紹Java生成壓縮文件的方法,感興趣的朋友一起看看吧
    2018-06-06
  • Spring Boot和Vue跨域請(qǐng)求問題原理解析

    Spring Boot和Vue跨域請(qǐng)求問題原理解析

    這篇文章主要介紹了Spring Boot和Vue跨域請(qǐng)求問題原理解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-12-12
  • 淺談Java中的分布式鎖

    淺談Java中的分布式鎖

    這篇文章主要介紹了淺談Java中的分布式鎖,為了保證一個(gè)方法或?qū)傩栽诟卟l(fā)情況下的同一時(shí)間只能被同一個(gè)線程執(zhí)行,在傳統(tǒng)單體應(yīng)用單機(jī)部署的情況下,可以使用Java并發(fā)處理相關(guān)的API(如ReentrantLock或Synchronized)進(jìn)行互斥控制,需要的朋友可以參考下
    2023-09-09
  • Lombok的詳細(xì)使用及優(yōu)缺點(diǎn)總結(jié)

    Lombok的詳細(xì)使用及優(yōu)缺點(diǎn)總結(jié)

    最近在學(xué)Mybatis,接觸到了Lombok的使用,所以寫一篇文章記錄一下,包括lombok的安裝及使用優(yōu)缺點(diǎn),感興趣的朋友跟隨小編一起看看吧
    2021-07-07
  • java instanceof操作符使用及原理解析

    java instanceof操作符使用及原理解析

    這篇文章主要介紹了java instanceof操作符使用及原理解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-12-12

最新評(píng)論