feignclient調用第三方接口,Spring Cloud之Feign客戶端調用工具

 2023-12-25 阅读 26 评论 0

摘要:feign介紹 Feign客戶端是一個web聲明式http遠程調用工具,提供了接口和注解方式進行調用。 ? Spring Cloud 支持 RestTemplate? Fetin Feign客戶端實際開發中用的最多 ,易讀性比較強。 ?? feignclient調用第三方接口,主要調用部分: pom: <proj

feign介紹

Feign客戶端是一個web聲明式http遠程調用工具,提供了接口和注解方式進行調用。

?

Spring Cloud 支持 RestTemplate? Fetin

Feign客戶端實際開發中用的最多 ,易讀性比較強。

??

feignclient調用第三方接口,主要調用部分:

pom:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.toov5</groupId><artifactId>order</artifactId><version>0.0.1-SNAPSHOT</version><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.0.1.RELEASE</version></parent><!-- 管理依賴 --><dependencyManagement><dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>Finchley.M7</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement><dependencies><!-- SpringBoot整合Web組件 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!-- SpringBoot整合eureka客戶端 --><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-client</artifactId></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-openfeign</artifactId></dependency></dependencies><!-- 注意: 這里必須要添加, 否者各種依賴有問題 --><repositories><repository><id>spring-milestones</id><name>Spring Milestones</name><url>https://repo.spring.io/libs-milestone</url><snapshots><enabled>false</enabled></snapshots></repository></repositories>
</project>

?yml:

###服務啟動端口號
server:port: 8002
###服務名稱(服務注冊到eureka名稱)  
spring:application:name: app-toov5-order
###服務注冊到eureka地址
eureka:client:service-url:defaultZone: http://127.0.0.1:8100/eureka###因為該應用為注冊中心,不會注冊自己register-with-eureka: true
###是否需要從eureka上獲取注冊信息fetch-registry: true

  

 Feign

package com.toov5.Feign;import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.RequestMapping;@FeignClient(name="app-toov5-member")   //name就是服務名稱
public interface MemberFeign {//Feign書寫方式 以Spring mvc接口形式書寫
    @RequestMapping("/getMember")   //接口形式  實現是交給Member實現的public String getMember();  //底層自動轉換成http協議實現rpc遠程調用
    
}

controller

package com.toov5.api.controller;import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;import com.toov5.Feign.MemberFeign;@RestController
public class FeignController {@Autowiredprivate MemberFeign memberFeign;@RequestMapping("/getFeignMember")public String feignMember() {return memberFeign.getMember();}
}

feign實現遠程調用原理,啟動類:

package com.toov5;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
import org.springframework.cloud.openfeign.EnableFeignClients;@SpringBootApplication(scanBasePackages={"com.toov5.*"})
@EnableEurekaClient
@EnableFeignClients   //可以開啟feign客戶端權限   
public class AppOrder {public static void main(String[] args) {SpringApplication.run(AppOrder.class, args);
}//解決RestTemplate找不到問題  把restTemplate注冊到Spring Boot容器中
//  @Bean
//  @LoadBalanced   手寫的 不要去實現本地負載均衡效果了
//  RestTemplate restTemplate() {  
//      return new RestTemplate();
//  }
//  
}

?

?

Member(不用變) 服務提供者不變

?

? pom:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.toov5</groupId><artifactId>member</artifactId><version>0.0.1-SNAPSHOT</version><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.0.1.RELEASE</version></parent><!-- 管理依賴 --><dependencyManagement><dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>Finchley.M7</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement><dependencies><!-- SpringBoot整合Web組件 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!-- SpringBoot整合eureka客戶端 --><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-client</artifactId></dependency></dependencies><!-- 注意: 這里必須要添加, 否者各種依賴有問題 --><repositories><repository><id>spring-milestones</id><name>Spring Milestones</name><url>https://repo.spring.io/libs-milestone</url><snapshots><enabled>false</enabled></snapshots></repository></repositories></project>

接口調用工具。  yml:

###服務啟動端口號
server:port: 8009
###服務名稱(服務注冊到eureka名稱)  
spring:application:name: app-toov5-member
###服務注冊到eureka地址
eureka:client:service-url:##當前會員注冊到eureka服務  地址+端口號 defaultZone: http://127.0.0.1:8100/eureka###因為該應用為注冊中心,不會注冊自己register-with-eureka: true
###是否需要從eureka上獲取注冊信息fetch-registry: true

  controller

package com.toov5.api.controller;import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;@RestController
public class MemberApiController {@Value("${server.port}")private String serverPort;@RequestMapping("/getMember")public String getMember() {return "會員服務"+serverPort;}
}

啟動類

package com.toov5.api;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;@SpringBootApplication
@EnableEurekaClient   //注冊到eureka
public class AppMember {public static void main(String[] args) {SpringApplication.run(AppMember.class, args);}}  

Eureka

pom:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.toov5</groupId><artifactId>SpringCloud-eureka-server</artifactId><version>0.0.1-SNAPSHOT</version><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.0.1.RELEASE</version></parent><!-- 管理依賴 --><dependencyManagement><dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>Finchley.M7</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement><dependencies><!--SpringCloud eureka-server --><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-server</artifactId></dependency></dependencies> <!-- 注意: 這里必須要添加, 否者各種依賴有問題 --><repositories><repository><id>spring-milestones</id><name>Spring Milestones</name><url>https://repo.spring.io/libs-milestone</url><snapshots><enabled>false</enabled></snapshots></repository></repositories></project>

yml:

###eureka 服務端口號
server:port: 8100
###服務注冊名稱
eureka:instance:##注冊中心ip地址hostname: 127.0.0.1
###客戶端調用地址client:serviceUrl:defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
###因為該應用為注冊中心,不會注冊自己 (集群設為true)register-with-eureka: false
###因為自己為注冊中心 ,不會去在該應用中的檢測服務 fetch-registry: false

被調用對象已與客戶端斷開連接。  啟動:

package com.toov5;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;@EnableEurekaServer   //開啟注冊中心
@SpringBootApplication 
public class AppEureka {public static void main(String[] args) {SpringApplication.run(AppEureka.class, args);}}

?

  

?

轉載于:https://www.cnblogs.com/toov5/p/9955561.html

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/1/194920.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息