千家信息网

Spring Cloud中Feign怎么使用

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,本篇内容主要讲解"Spring Cloud中Feign怎么使用",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"Spring Cloud中Feign怎么使用"
千家信息网最后更新 2026年11月01日Spring Cloud中Feign怎么使用

本篇内容主要讲解"Spring Cloud中Feign怎么使用",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"Spring Cloud中Feign怎么使用"吧!

创建公共接口

首先我们来创建一个普通的maven工程,叫做hello-service-api,由于我们要在这一个项目中使用SpringMVC的注解,因此创建成功之后,需要添加spring-boot-starter-web依赖,如下:

    org.springframework.boot    spring-boot-starter-web    org.sang    commons    1.0-SNAPSHOT

commons是我的另外一个maven项目,里边提供了Book这个类,因为我的hello-service-api一会要用到Book类,当然这里你也可以直接在hello-service-api中定义一个Book类。

项目创建好之后,我们在这个项目中提供一个HelloSerivce接口,如下:

@RequestMapping("/hs2")public interface HelloService {    @RequestMapping(value = "/hello1", method = RequestMethod.GET)    String hello(@RequestParam("name") String name);    @RequestMapping(value = "/hello2", method = RequestMethod.GET)    Book hello(@RequestHeader("name") String name, @RequestHeader("author") String author, @RequestHeader("price") Integer price) throws UnsupportedEncodingException;    @RequestMapping(value = "/hello3", method = RequestMethod.POST)    String hello(@RequestBody Book book);}

小伙伴们有木有觉得眼熟呢?就是我们上文在HelloService中定义的内容。为了和上文的HelloService进行区分,这次我做了请求窄化,给请求定义了前缀/hs2。

服务提供者中实现接口

hello-service-api工程写好之后,我们在服务提供者中添加对hello-service-api工程的依赖,如下:

    org.sang    hello-service-api    0.0.1-SNAPSHOT

然后在服务提供者中创建BookController2实现HelloService接口,如下:

@RestControllerpublic class BookController2 implements HelloService {    @Override    public String hello(@RequestParam("name") String name) {        return "hello " + name + "!";    }    @Override    public Book hello(@RequestHeader("name") String name, @RequestHeader("author") String author, @RequestHeader("price") Integer price) throws UnsupportedEncodingException {        org.sang.Book book = new org.sang.Book();        book.setName(URLDecoder.decode(name,"UTF-8"));        book.setAuthor(URLDecoder.decode(author,"UTF-8"));        book.setPrice(price);        System.out.println(book);        return book;    }    @Override    public String hello(@RequestBody Book book) {        return "书名为:" + book.getName() + ";作者为:" + book.getAuthor();    }}

实现了HelloService接口当然就要实现HelloService接口中的方法,方法的实现还是和上文的一样。不同的是我这里不需要在方法上面添加@RequestMapping注解,这些注解在父接口中都有,不过在Controller上还是要添加@RestController注解,另外需要注意的是,方法中的参数@RequestHeader和@RequestBody注解还是要添加,@RequestParam注解可以不添加。

服务消费者中继承接口

写完了服务提供者之后,接下来我们再来看看服务消费者。首先在服务消费者中添加对hello-service-api的依赖,然后新建一个HelloService2类继承hello-service-api中的HelloService接口,如下:

@FeignClient("hello-service")public interface HelloService2 extends HelloService {}

这个接口中不需要添加任何方法,方法都在父接口中,这里只需要在类上面添加@FeignClient("hello-service")注解来绑定服务即可。

然后在Controller中提供相应的测试接口,如下:

@RestControllerpublic class FeignConsumerController {    @Autowired    HelloService2 helloService2;    @RequestMapping("/hello1")    public String hello1() {        return helloService2.hello("张三");    }    @RequestMapping(value = "/hello2")    public Book hello2() throws UnsupportedEncodingException {        Book book = helloService2.hello(URLEncoder.encode("三国演义","UTF-8"), URLEncoder.encode("罗贯中","UTF-8"), 33);        System.out.println(book);        return book;    }    @RequestMapping("/hello3")    public String hello3() {        Book book = new Book();        book.setName("红楼梦");        book.setPrice(44);        book.setAuthor("曹雪芹");        return helloService2.hello(book);    }}

到此,相信大家对"Spring Cloud中Feign怎么使用"有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

接口 服务 方法 注解 提供者 项目 UTF-8 上文 内容 工程 消费者 还是 消费 学习 不同 实用 普通 更深 眼熟 成功 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 湖北九亚互联网络科技有限公司 互联网佳科技有限公司 为想互联网科技 互联网科技股有哪些 丰台科技园 互联网公司 科技大学互联网专业好不好 青海省互联网新科技 温州喔噻互联网科技有限公司 银川新华互联网科技职业技术培训学校图片 茂名市互联网科技产业园 互联网公司科技股 南平创想时代互联网科技有限公司 青岛科技大学互联网大赛研究生 迪庆互联网科技招生 伊宁互联网科技做什么的 深圳互联网科技的发展 互联网企业科技类企业如何做账 东营紫格互联网科技 山东大美朱楼互联网科技有限公司 广州三三互联网科技有限公司 互联网科技有限公司经营范围 碳银互联网科技 友谊互联网络科技 国外互联网科技网站 互联网科技公司做什么 互联网金融科技展 互联网公司黑科技创始人 互联网科技年终奖 互联网科技包装股份有限公司上市 平安好医生打造互联网科技医疗
0