重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
本篇文章给大家分享的是有关怎么在SpringCloud中使用Feign调用服务,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。
创新互联公司是一家集网站建设,桥东企业网站建设,桥东品牌网站建设,网站定制,桥东网站建设报价,网络营销,网络优化,桥东网站推广为一体的创新建站企业,帮助传统企业提升企业形象加强企业竞争力。可充分满足这一群体相比中小企业更为丰富、高端、多元的互联网需求。同时我们时刻保持专业、时尚、前沿,时刻以成就客户成长自我,坚持不断学习、思考、沉淀、净化自己,让我们为更多的企业打造出实用型网站。
使用Spring Cloud Feign
创建一个SpringBoot工程,作为服务调用方
1.pom.xml
org.springframework.boot spring-boot-starter-web org.springframework.cloud spring-cloud-starter-eureka org.springframework.cloud spring-cloud-starter-feign org.springframework.boot spring-boot-starter-test test
spring-cloud-starter-feign加入了feign的依赖
2.启动类
@EnableFeignClients @EnableDiscoveryClient @SpringBootApplication public class FeignConsumerApplication { public static void main(String[] args) { SpringApplication.run(FeignConsumerApplication.class, args); } }
@EnableFeignClients:开启Spring Cloud Feign的支持功能
3.服务层
@FeignClient("hello-service") public interface HelloService { @RequestMapping(value = "/hello", method = RequestMethod.GET) String hello(); }
@FeignClient(“hello-service”):制定服务名来绑定服务
注:服务名不区分大小写
@RequestMapping:指定调用服务中的具体方法
4.Controller层
@Controller public class ConsumerController { @Autowired private HelloService helloService; @RequestMapping(value = "/feign-consumer", method = RequestMethod.GET) @ResponseBody public String helloConsumer() { return helloService.hello(); } }
在方法中调用这个绑定了hello-service服务接口的客户端向该服务发起/hello接口的调用
5.配置类
server.port=9001 spring.application.name=feign-consumer eureka.client.serviceUrl.defaultZone=http://localhost:1111/eureka/
启动程序以后,在浏览器中输入http://localhost:9001/feign-consumer出现下图:
- 提升使用,带参数的请求
在具体业务中的接口会比之前程序的复杂得多,这里介绍一下Feign对集中不同形式参数的绑定方法。有@RequestParam、@RequestHeader、@RequestBody
1.改造服务提供类的Service层,添加几个方法
@RequestMapping(value = "/hello1", method = RequestMethod.GET) @ResponseBody public String hello(@RequestParam String name) { return "hello " + name; } @RequestMapping(value = "/hello2", method = RequestMethod.GET) @ResponseBody public User hello(@RequestHeader String name, @RequestHeader Integer age) { return new User(name, age); } @RequestMapping(value = "/hello3", method = RequestMethod.POST) @ResponseBody public String hello(@RequestBody User user) { return "Hello " + user.getName() + ", " + user.getAge(); }
2.添加一个javabean
public class User { private String name; private Integer age; public User() { } public User(String name, Integer age) { this.name = name; this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } @Override public String toString() { return "User{" + "name='" + name + '\'' + ", age=" + age + '}'; } }
3.修改服务调用类的接口
@RequestMapping(value = "/hello1", method = RequestMethod.GET) String hello(@RequestParam("name") String name); @RequestMapping(value = "/hello2", method = RequestMethod.GET) User hello(@RequestHeader("name") String name, @RequestHeader("age") Integer age); @RequestMapping(value = "/hello3", method = RequestMethod.POST) String hello(@RequestBody User user);
这里在定义各参数绑定时@RequestParam、@RequestHeader等可以指定参数名称的注解,但它们的value不能少,否则会报错,这和SpringMVC中有一点不同
4.在服务调用类Controller层添加一个测试的接口
@RequestMapping(value = "/feign-consumer2", method = RequestMethod.GET) @ResponseBody public String helloConsumer2() { String s2 = helloService.hello("dayday"); return s2; }
启动以后访问浏览器:
以上就是怎么在SpringCloud中使用Feign调用服务,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注创新互联行业资讯频道。