SpringCloud声明式Feign客户端调用工具使用
作者:isWulongbo
这篇文章主要为大家介绍了SpringCloud声明式Feign客户端调用工具使用详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
前言
springcloud 支持两种客户端调用工具:
- RestTemplate,基本上不使用
- Feign,采用接口加注解方式,可读性较强
注:本來打算继续使用 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的资料请关注脚本之家其它相关文章!