SpringCloud之Feign远程接口映射的实现

时间:2021-05-20

一.简介

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: 9001eureka: 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;@RestControllerpublic 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"})@EnableEurekaClientpublic 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组件,实现客户端负载均衡。使用接口调用消费端远程接口就像调用本地方法一样。

到此这篇关于SpringCloud之Feign远程接口映射的实现的文章就介绍到这了,更多相关SpringCloud Feign远程接口映射内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!

声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。

相关文章