SpringCloud聲明式Feign客戶端調用工具使用
前言
springcloud 支持兩種客戶端調用工具:
- RestTemplate,基本上不使用
- Feign,采用接口加注解方式,可讀性較強
注:本來打算繼續(xù)使用 consul
作為注冊中心來進行 Feign
客戶端調用的,provide
配置如下,無奈一直調用不到 注冊上來的服務名,只好改用 Eureka
來使用,如有知道原因請指教!
##服務端口號 server: port: 8501 spring: application: ##服務別名--服務注冊到consul名稱 name: consul-member ##注冊中心consul地址 cloud: consul: host: localhost port: 8500 discovery: service-name: ${spring.application.name} # 服務提供名稱 # ## consul ip地址 # hostname: 192.168.3.91
Eureka Feign客戶端調用
這里我們基于 SpringCloud整合之Eureka高可用集群 項目來展示。provide
我們不需要做任何修改,只需要在 consumer
order模塊加入以下依賴:
<!--springcloud 整合openfeign--> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-openfeign</artifactId> </dependency>
feign 調用接口
MemberApiFeign.java
: @FeignClient指定provide服務別名,接口copy調用即可:
package com.baba.wlb.api.feign; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.RequestMapping; /** * @Author wulongbo * @Date 2021/1/21 19:17 * @Version 1.0 */ @FeignClient(name = "app-member") public interface MemberApiFeign { // Feign 書寫方式以springMVC接口形式書寫 // @FeignClient調用服務接口name就是服務名稱 @RequestMapping("/getMember") String getMember(); }
控制頁面
AppFeignController.java
: 注入 Feign 接口
package com.baba.wlb.api.controller; import com.baba.wlb.api.feign.MemberApiFeign; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; /** * @Author wulongbo * @Date 2021/1/21 19:21 * @Version 1.0 */ @RestController public class AppFeignController { @Autowired private MemberApiFeign memberApiFeign; @RequestMapping("/getFeignOrder") public String getFeignOrder() { return memberApiFeign.getMember(); } }
啟動類
AppOrder
啟動類:添加 @EnableFeignClients 開啟Feign客戶端權限
package com.baba.wlb; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.client.discovery.EnableDiscoveryClient; import org.springframework.cloud.client.loadbalancer.LoadBalanced; import org.springframework.cloud.openfeign.EnableFeignClients; import org.springframework.context.annotation.Bean; import org.springframework.web.client.RestTemplate; /** * @Author wulongbo * @Date 2021/1/9 15:39 * @Version 1.0 */@SpringBootApplication @EnableDiscoveryClient @EnableFeignClients public class AppOrder { public static void main(String[] args) { SpringApplication.run(AppOrder.class, args); // 第二種方式 如果使用rest方式以別名方式進行調用依賴ribbon負載均衡器 // 第二種方式 @LoadBalanced能讓restTemplate 模板在請求時擁有客戶端負載均衡的能力 } // 解決RestTemplate 找不到原因, 把RestTemplate注冊到Springboot容器中 @Bean // 第一種方式 // @Bean // RestTemplate restTemplate(){ // return new RestTemplate(); // } // 第二種方式 @LoadBalanced能讓restTemplate 模板在請求時擁有客戶端負載均衡的能力 // @Bean // @LoadBalanced // RestTemplate restTemplate() { // return new RestTemplate(); // } // @EnableFeignClients 開啟Feign客戶端權限 }
注:啟動類位置要放正確
啟動 Eureka Server服務,啟動 member provide 服務,啟動 order consumer 服務后訪問:
http://localhost:8200/getFeignOrder
以上就是SpringCloud聲明式Feign客戶端調用工具使用的詳細內容,更多關于SpringCloud聲明式Feign的資料請關注腳本之家其它相關文章!
相關文章
Java中的BlockingQueue阻塞隊列原理以及實現詳解
這篇文章主要介紹了Java中的BlockingQueue阻塞隊列原理以及實現詳解,在最常見的使用到這個阻塞隊列的地方,就是我們耳熟能詳的線程池里面了,作為我們線程池的一大最大參與者,也是AQS的一個具體實現,需要的朋友可以參考下2023-12-12