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

spring cloud 之 Feign 使用HTTP請(qǐng)求遠(yuǎn)程服務(wù)的實(shí)現(xiàn)方法

 更新時(shí)間:2017年06月15日 08:51:28   投稿:jingxian  
下面小編就為大家?guī)硪黄猻pring cloud 之 Feign 使用HTTP請(qǐng)求遠(yuǎn)程服務(wù)的實(shí)現(xiàn)方法。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧

一、Feign 簡(jiǎn)介

在spring Cloud Netflix棧中,各個(gè)微服務(wù)都是以HTTP接口的形式暴露自身服務(wù)的,因此在調(diào)用遠(yuǎn)程服務(wù)時(shí)就必須使用HTTP客戶端。我們可以使用JDK原生的URLConnection、Apache的Http Client、Netty的異步HTTP Client, Spring的RestTemplate。但是,用起來最方便、最優(yōu)雅的還是要屬Feign了。

Feign是一種聲明式、模板化的HTTP客戶端。在Spring Cloud中使用Feign, 我們可以做到使用HTTP請(qǐng)求遠(yuǎn)程服務(wù)時(shí)能與調(diào)用本地方法一樣的編碼體驗(yàn),開發(fā)者完全感知不到這是遠(yuǎn)程方法,更感知不到這是個(gè)HTTP請(qǐng)求。

二、feign的使用在spring cloud中的使用

1、添加依賴

   <dependency>
      <groupId>org.springframework.cloud</groupId>
      <artifactId>spring-cloud-starter-feign</artifactId>
    </dependency>

2、創(chuàng)建FeignClient 

@FeignClient(name="SPRING-PRODUCER-SERVER/spring")
public interface FeignUserClient {
 @RequestMapping( value = "/findAll/{name}",method = RequestMethod.GET)
 public List<SpringUser> findAll(@PathVariable("name") String name);
 
 @RequestMapping( value = "/findUserPost",method = RequestMethod.POST)
 public SpringUser findUserPost(@RequestBody SpringUser springUser);//復(fù)合類型好像默認(rèn)是POST請(qǐng)求
}

@FeignClient(name="SPRING-PRODUCER-SERVER/spring"):用于通知Feign組件對(duì)該接口進(jìn)行代理(不需要編寫接口實(shí)現(xiàn)),name屬性指定我們要調(diào)用哪個(gè)服務(wù)。使用者可直接通過@Autowired注入。

@RequestMapping表示在調(diào)用該方法時(shí)需要向/group/{groupId}發(fā)送GET請(qǐng)求。

@PathVariable與SpringMVC中對(duì)應(yīng)注解含義相同。

原理:Spring Cloud應(yīng)用在啟動(dòng)時(shí),F(xiàn)eign會(huì)掃描標(biāo)有@FeignClient注解的接口,生成代理,并注冊(cè)到Spring容器中。生成代理時(shí)Feign會(huì)為每個(gè)接口方法創(chuàng)建一個(gè)RequetTemplate對(duì)象,該對(duì)象封裝了HTTP請(qǐng)求需要的全部信息,請(qǐng)求參數(shù)名、請(qǐng)求方法等信息都是在這個(gè)過程中確定的,F(xiàn)eign的模板化就體現(xiàn)在這里。

3、啟動(dòng)類上添加注解

@Configuration
@ComponentScan
@EnableAutoConfiguration
@EnableEurekaClient
@EnableFeignClients
public class SpringConsumerServerFeignApplication {
  public static void main(String[] args) {
    SpringApplication.run(SpringConsumerServerFeignApplication.class, args);
  }
}

4、配置文件 application.yml

spring:
 application:
 name: spring-consumer-server-feign
server: 
 port: 8084
 context-path: /spring
#服務(wù)注冊(cè)中心的配置內(nèi)容,指定服務(wù)注冊(cè)中心的位置
eureka:
 client:
 serviceUrl:
  defaultZone: http://user:password@localhost:8761/eureka/

三、自定義Feign的 配置

1、自定義Configuration

@Configuration
public class FooConfiguration {
  @Bean
  public Contract feignContract() {
    //這將SpringMvc Contract 替換為feign.Contract.Default
    return new feign.Contract.Default();
  }
}

2、使用自定義的Configuration

@FeignClient(name="SPRING-PRODUCER-SERVER/spring",configuration=FooConfiguration.class)
public interface FeignUserClient {
  @RequestLine("GET /findAll/{name}")
  public List<SpringUser> findAll(@Param("name") String name);  
 /* @RequestMapping( value = "/findAll/{name}",method = RequestMethod.GET)
 public List<SpringUser> findAll(@PathVariable("name") String name);
 
 @RequestMapping( value = "/findUserPost",method = RequestMethod.POST)
 public SpringUser findUserPost(@RequestBody SpringUser springUser);*/
}

@RequestLine:是feign的注解

四、Feign日志的配置

為每個(gè)創(chuàng)建的Feign客戶端創(chuàng)建一個(gè)記錄器。默認(rèn)情況下,記錄器的名稱是用于創(chuàng)建Feign客戶端的接口的完整類名。Feign日志記錄僅響應(yīng)DEBUG級(jí)別。logging.level.project.user.UserClient: DEBUG

在配置文件application.yml 中加入:

logging:
 level:
 com.jalja.org.spring.simple.dao.FeignUserClient: DEBUG 

在自定義的Configuration的類中添加日志級(jí)別

@Configuration
public class FooConfiguration {
  /* @Bean
  public Contract feignContract() {
    //這將SpringMvc Contract 替換為feign.Contract.Default
    return new feign.Contract.Default();
  }*/
  @Bean
  Logger.Level feignLoggerLevel() {
    //設(shè)置日志
    return Logger.Level.FULL;
  }
}

PS:Feign請(qǐng)求超時(shí)問題

Hystrix默認(rèn)的超時(shí)時(shí)間是1秒,如果超過這個(gè)時(shí)間尚未響應(yīng),將會(huì)進(jìn)入fallback代碼。而首次請(qǐng)求往往會(huì)比較慢(因?yàn)镾pring的懶加載機(jī)制,要實(shí)例化一些類),這個(gè)響應(yīng)時(shí)間可能就大于1秒了

解決方案有三種,以feign為例。

方法一

hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds: 5000

該配置是讓Hystrix的超時(shí)時(shí)間改為5秒

方法二

hystrix.command.default.execution.timeout.enabled: false

該配置,用于禁用Hystrix的超時(shí)時(shí)間

方法三

feign.hystrix.enabled: false

該配置,用于索性禁用feign的hystrix。該做法除非一些特殊場(chǎng)景,不推薦使用。

以上這篇spring cloud 之 Feign 使用HTTP請(qǐng)求遠(yuǎn)程服務(wù)的實(shí)現(xiàn)方法就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java中char數(shù)組(字符數(shù)組)與字符串String類型的轉(zhuǎn)換方法

    Java中char數(shù)組(字符數(shù)組)與字符串String類型的轉(zhuǎn)換方法

    這篇文章主要介紹了Java中char數(shù)組(字符數(shù)組)與字符串String類型的轉(zhuǎn)換方法,涉及Java中toCharArray與valueOf方法的使用技巧,需要的朋友可以參考下
    2015-12-12
  • 一文帶你搞懂Java定時(shí)器Timer的使用

    一文帶你搞懂Java定時(shí)器Timer的使用

    定時(shí)器類似于我們生活中的鬧鐘,可以設(shè)定一個(gè)時(shí)間來提醒我們。而定時(shí)器是指定一個(gè)時(shí)間去執(zhí)行一個(gè)任務(wù),讓程序去代替人工準(zhǔn)時(shí)操作。本文就來聊聊Java定時(shí)器Timer的使用,需要的可以參考一下
    2023-01-01
  • 詳解Java中方法重寫和方法重載的6個(gè)區(qū)別

    詳解Java中方法重寫和方法重載的6個(gè)區(qū)別

    方法重寫和方法重載都是面向?qū)ο缶幊讨?,那么方法重寫和方法重載有哪些區(qū)別,本文就詳細(xì)的來介紹一下,感興趣的可以了解一下
    2022-01-01
  • springboot如何集成mysql

    springboot如何集成mysql

    這篇文章主要介紹了springboot如何集成mysql問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • springboot使用Validator校驗(yàn)方式

    springboot使用Validator校驗(yàn)方式

    這篇文章主要介紹了springboot使用Validator校驗(yàn)方式,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2018-01-01
  • struts2實(shí)現(xiàn)文件下載功能

    struts2實(shí)現(xiàn)文件下載功能

    這篇文章主要為大家詳細(xì)介紹了struts2實(shí)現(xiàn)文件下載功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-03-03
  • 解決IDEA springboot

    解決IDEA springboot"spring-boot-maven-plugin"報(bào)紅問題

    這篇文章主要介紹了解決IDEA springboot"spring-boot-maven-plugin"報(bào)紅問題,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-04-04
  • Java中BeanUtils.copyProperties()詳解及應(yīng)用場(chǎng)景

    Java中BeanUtils.copyProperties()詳解及應(yīng)用場(chǎng)景

    BeanUtils.copyProperties()是Apache?Commons?BeanUtils提供的方法,用于Java對(duì)象間屬性的復(fù)制,特別適用于DTO、VO和Entity之間的數(shù)據(jù)傳遞,這篇文章主要介紹了Java中BeanUtils.copyProperties()詳解及應(yīng)用場(chǎng)景的相關(guān)資料,需要的朋友可以參考下
    2024-09-09
  • SpringAOP實(shí)現(xiàn)日志收集管理功能(步驟詳解)

    SpringAOP實(shí)現(xiàn)日志收集管理功能(步驟詳解)

    這篇文章主要介紹了SpringAOP實(shí)現(xiàn)日志收集管理功能,本文分步驟通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-03-03
  • Java 最優(yōu)二叉樹的哈夫曼算法的簡(jiǎn)單實(shí)現(xiàn)

    Java 最優(yōu)二叉樹的哈夫曼算法的簡(jiǎn)單實(shí)現(xiàn)

    這篇文章主要介紹了Java 最優(yōu)二叉樹的哈夫曼算法的簡(jiǎn)單實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-10-10

最新評(píng)論