SpringCloud Feign远程接口映射 SpringCloud之Feign远程接口映射的实现
奶茶37.2℃ 人气:0想了解SpringCloud之Feign远程接口映射的实现的相关内容吗,奶茶37.2℃在本文为您仔细讲解SpringCloud Feign远程接口映射的相关知识和一些Code实例,欢迎阅读和指正,我们先划重点:SpringCloud,远程接口映射,SpringCloud,Feign远程,下面大家一起来学习吧。
一.简介
SpringCloud是基于Restful的远程调用框架,引入Ribbon负载均衡组件后还需要客户端使用RestTemplate调用远程接口,操作起来还显得繁琐。SpringCloud提供了远程接口映射,将远程Restful服务映射为远程接口,消费端注入远程接口即可实现方法调用。
二.流程
1.新建远程接口映射模块service-api,并引入Feign接口映射依赖
<dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-feign</artifactId> </dependency> </dependencies>
2.编写接口映射接口
package com.vincent.service; import org.springframework.cloud.netflix.feign.FeignClient; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; @FeignClient("SERVICE-USER") @RequestMapping("/service-user") public interface IUserService { @GetMapping("/detail") Object detail(@RequestParam("id") Integer id); }
3.配置消费端application.yml
server: port: 9001 eureka: client: service-url: defaultZone: http://localhost:7001/service-eureka/eureka register-with-eureka: false
4.消费端添加映射模块依赖
<dependency> <groupId>com.vincent</groupId> <artifactId>service-api</artifactId> <version>1.0-SNAPSHOT</version> </dependency>
5.客户端注入需要使用的服务接口映射
package com.vincent.controller; import com.vincent.service.IUserService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; @RestController public class UserController { @Autowired private IUserService userService; @GetMapping("/detail") public Object detail(Integer id){ return this.userService.detail(id); } }
5.编写消费端启动类
package com.vincent; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.netflix.eureka.EnableEurekaClient; import org.springframework.cloud.netflix.feign.EnableFeignClients; @SpringBootApplication @EnableFeignClients({"com.vincent.service"}) @EnableEurekaClient public class ConsumerApp { public static void main(String[] args) { SpringApplication.run(ConsumerApp.class,args); } }
@EnableFeignClients 定义Feign接口映射扫描包,IOC容器会自动创建接口实现类
6.访问 http://localhost:9001/detail?id=1
三.总结
Feign接口映射服务端Restful接口会自动依赖Ribbon组件,实现客户端负载均衡。使用接口调用消费端远程接口就像调用本地方法一样。
加载全部内容