欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

SpringCloud Feign 服務(wù)調(diào)用的實現(xiàn)

 更新時間:2019年01月10日 15:07:20   作者:huanzi-qch  
Feign是一個聲明性web服務(wù)客戶端。本文記錄多個服務(wù)之間使用Feign調(diào)用,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

前言

前面我們已經(jīng)實現(xiàn)了服務(wù)的注冊與發(fā)現(xiàn)(請戳:SpringCloud系列——Eureka 服務(wù)注冊與發(fā)現(xiàn)),并且在注冊中心注冊了一個服務(wù)myspringboot,本文記錄多個服務(wù)之間使用Feign調(diào)用。

Feign是一個聲明性web服務(wù)客戶端。它使編寫web服務(wù)客戶機(jī)變得更容易,本質(zhì)上就是一個http,內(nèi)部進(jìn)行了封裝而已。

GitHub地址:https://github.com/OpenFeign/feign

官方文檔:https://cloud.spring.io/spring-cloud-static/spring-cloud-openfeign/2.1.0.RC2/single/spring-cloud-openfeign.html

服務(wù)提供者

提供者除了要在注冊中心注冊之外,不需要引入其他東西,注意一下幾點(diǎn)即可:

1、如果使用對象接參,必須使用@RequestBody,否則接不到數(shù)據(jù)

2、接參只能出現(xiàn)一個復(fù)雜對象,例:public Result<List<UserVo>> list(@RequestBody UserVo entityVo) { ... }

3、提供者如果又要向其他消費(fèi)者提供服務(wù),又要向瀏覽器提供服務(wù),建議保持原先的Controller,新建一個專門給消費(fèi)者的Controller

測試接口

@RestController
@RequestMapping("/user/")
public class UserController {

  @Autowired
  private UserService userService;
  @RequestMapping("list")
  public Result<List<UserVo>> list(@RequestBody UserVo entityVo) {
    return userService.list(entityVo);
  }

  @RequestMapping("get/{id}")
  public Result<UserVo> get(@PathVariable("id") Integer id) {
    return userService.get(id);
  }
}

服務(wù)消費(fèi)者

消費(fèi)者maven引入jar

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

配置文件

對日期的解析,消費(fèi)者要跟提供者一致,不然會報json解析錯誤

#超時時間
feign.httpclient.connection-timeout=30000

#mvc接收參數(shù)時對日期進(jìn)行格式化
spring.mvc.date-format=yyyy-MM-dd HH:mm:ss
#jackson對響應(yīng)回去的日期參數(shù)進(jìn)行格式化
spring.jackson.date-format=yyyy-MM-dd HH:mm:ss
spring.jackson.time-zone=GMT+8

服務(wù)調(diào)用

1、springdatejpa 應(yīng)用名稱,是服務(wù)提供者在eureka注冊的名字,F(xiàn)eign會從注冊中心獲取實例

2、如果不想啟動eureka服務(wù),直連本地開發(fā):@FeignClient(name = "springdatejpa", path = "/user/",url = "http://localhost:10086")

3、如果使用@RequestMapping,最好指定調(diào)用方式

4、消費(fèi)者的返回值必須與提供者的返回值一致,參數(shù)對象也要一致

更多@FeignClient注解參數(shù)配置,請參閱官方文檔

@FeignClient(name = "springdatejpa", path = "/user/")
public interface MyspringbootFeign {

  @RequestMapping(value = "get/{id}")
  Result<UserVo> get(@PathVariable("id") Integer id);

  @RequestMapping(value = "list", method = RequestMethod.GET)
  Result<List<UserVo>> list(@RequestBody UserVo entityVo);
}
/**
   * feign調(diào)用
   */
  @GetMapping("feign/get/{id}")
  Result<UserVo> get(@PathVariable("id") Integer id){
    return myspringbootFeign.get(id);
  }


  /**
   * feign調(diào)用
   */
  @GetMapping("feign/list")
  Result<List<UserVo>> list(UserVo userVo){
    return myspringbootFeign.list(userVo);
  }

啟動類

啟動類加入注解:@EnableFeignClients

@EnableEurekaClient
@EnableFeignClients
@SpringBootApplication
public class MyspringbootApplication{

  public static void main(String[] args) {
    SpringApplication.run(MyspringbootApplication.class, args);
  }

}

效果

成功注冊兩個服務(wù)

成功調(diào)用

報錯記錄

1、啟動時報了個SQL錯誤

解決:配置文件連接數(shù)據(jù)時指定serverTimezone=GMT%2B8

2、當(dāng)我將之前搭好的一個springboot-springdata-jpa整合項目在eureka注冊時出現(xiàn)了一個報錯

然后在網(wǎng)上查了下說是因為springboot版本問題,之前這個項目用的是2.0.1.RELEASE,現(xiàn)在要在eureka注冊,pom引入了就出現(xiàn)了上面的報錯

<!-- eureka-client -->
    <dependency>
      <groupId>org.springframework.cloud</groupId>
      <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
    </dependency>

    <!-- actuator -->
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-actuator</artifactId>
    </dependency>
<dependencyManagement>
    <dependencies>
      <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-dependencies</artifactId>
        <version>Greenwich.RC1</version>
        <type>pom</type>
        <scope>import</scope>
      </dependency>
    </dependencies>
  </dependencyManagement>
  <repositories>
    <repository>
      <id>spring-milestones</id>
      <name>Spring Milestones</name>
      <url>https://repo.spring.io/milestone</url>
    </repository>
  </repositories>

解決:升級了springboot版本,2.1.0,項目正常啟動

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.1.0.RELEASE</version>
    <!--<version>2.0.1.RELEASE</version>-->
    <relativePath/> <!-- lookup parent from repository -->
  </parent>

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java面試題沖刺第四天--數(shù)據(jù)庫

    Java面試題沖刺第四天--數(shù)據(jù)庫

    這篇文章主要為大家分享了最有價值的三道數(shù)據(jù)庫面試題,涵蓋內(nèi)容全面,包括數(shù)據(jù)結(jié)構(gòu)和算法相關(guān)的題目、經(jīng)典面試編程題等,感興趣的小伙伴們可以參考一下
    2021-07-07
  • 詳解Spring Boot使用系統(tǒng)參數(shù)表提升系統(tǒng)的靈活性

    詳解Spring Boot使用系統(tǒng)參數(shù)表提升系統(tǒng)的靈活性

    Spring Boot項目中常有一些相對穩(wěn)定的參數(shù)設(shè)置項,其作用范圍是系統(tǒng)級的或模塊級的,這些參數(shù)稱為系統(tǒng)參數(shù)。這些變量以參數(shù)形式進(jìn)行配置,從而提高變動和擴(kuò)展的靈活性,保持代碼的穩(wěn)定性
    2021-06-06
  • 一文帶你搞懂Spring響應(yīng)式編程

    一文帶你搞懂Spring響應(yīng)式編程

    相信響應(yīng)式編程經(jīng)常會在各種地方被提到。本篇就為大家從函數(shù)式編程一直到Spring?WeFlux做一次簡單的講解,并給出一些示例,希望大家可以更好的理解響應(yīng)式編程
    2022-07-07
  • java地理坐標(biāo)系及投影間轉(zhuǎn)換代碼示例

    java地理坐標(biāo)系及投影間轉(zhuǎn)換代碼示例

    在地圖投影中,經(jīng)常需要將坐標(biāo)從不同的坐標(biāo)系之間進(jìn)行轉(zhuǎn)換,下面這篇文章主要給大家介紹了關(guān)于java地理坐標(biāo)系及投影間轉(zhuǎn)換的相關(guān)資料,需要的朋友可以參考下
    2024-08-08
  • 詳解JNI到底是什么

    詳解JNI到底是什么

    JNI是Java Native Interface的縮寫,通過使用 Java本地接口書寫程序,可以確保代碼在不同的平臺上方便移植。從Java1.1開始,JNI標(biāo)準(zhǔn)成為java平臺的一部分,它允許Java代碼和其他語言寫的代碼進(jìn)行交互
    2021-06-06
  • JUnit5中的參數(shù)化測試實現(xiàn)

    JUnit5中的參數(shù)化測試實現(xiàn)

    參數(shù)化測試使得我們可以使用不同的參數(shù)運(yùn)行同一個測試方法,從而減少我們編寫測試用例的工作量,本文主要介紹了JUnit5中的參數(shù)化測試實現(xiàn),感興趣的可以了解一下
    2023-05-05
  • PostMan如何傳參給@RequestBody(接受前端參數(shù))

    PostMan如何傳參給@RequestBody(接受前端參數(shù))

    這篇文章主要介紹了PostMan如何傳參給@RequestBody(接受前端參數(shù)),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-10-10
  • java面試應(yīng)用上線后Cpu使用率飆升如何排查

    java面試應(yīng)用上線后Cpu使用率飆升如何排查

    這篇文章主要為大家介紹了java面試中應(yīng)用上線后Cpu使用率飆升如何排查的方法示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-07-07
  • java多線程抓取鈴聲多多官網(wǎng)的鈴聲數(shù)據(jù)

    java多線程抓取鈴聲多多官網(wǎng)的鈴聲數(shù)據(jù)

    很容易就能發(fā)現(xiàn)通過改變 listId和page就能從服務(wù)器獲取鈴聲的json數(shù)據(jù), 通過解析json數(shù)據(jù), 可以看到都帶有{"hasmore":1,"curpage":1}這樣子的指示,通過判斷hasmore的值,決定是否進(jìn)行下一頁的抓取。 但是通過上面這個鏈接返回的json中不帶有鈴聲的下載地址
    2016-04-04
  • 使用Postman傳遞arraylist數(shù)據(jù)給springboot方式

    使用Postman傳遞arraylist數(shù)據(jù)給springboot方式

    這篇文章主要介紹了使用Postman傳遞arraylist數(shù)據(jù)給springboot方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-12-12

最新評論