SpringCloud系列声明式服务调用Netflix Feign

网友投稿 679 2022-05-30

在上一章的学习中,我们知道了微服务的基本概念,知道怎么基于Ribbon+restTemplate的方式实现服务调用,接着上篇博客,我们学习怎么基于Feign实现服务调用,请先学习上篇博客,然后再学习本篇博客

Feign是一个声明式的web service客户端,它使得编写web service客户端更为容易。创建接口,为接口添加注解,即可使用Feign。Feign可以使用Feign注解或者JAX-RS注解,还支持热插拔的编码器和解码器。

环境准备:

JDK 1.8

SpringBoot2.2.3

SpringCloud(Hoxton.SR6)

Maven 3.2+

开发工具

IntelliJ IDEA

smartGit

创建一个SpringBoot Initialize项目,详情可以参考我之前博客:SpringBoot系列之快速创建项目教程

port: 8083 spring: application: name: feign-service-consumer eureka: client: service-url: defaultZone: http://localhost:8761/eureka/ healthcheck: enabled: false instance: status-page-url-path: http://localhost:8761/actuator/info health-check-url-path: http://localhost:8761/actuator//health prefer-ip-address: true instance-id: feign-service-consumer8083

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

@FeignClient指定服务名称,@RequestMapping指定要调用的接口

package com.example.springcloud.client.service; import com.example.springcloud.client.bean.User; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.stereotype.Service; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; /** *

 * UserService * 
* *
 * @author mazq * 修改记录 * 修改后版本: 修改人: 修改日期: 2020/07/28 13:09 修改内容: * 
*/ @FeignClient(value = "EUREKA-SERVICE-PROVIDER") @Service public interface UserService { @RequestMapping(value = "/api/users/{username}",method = RequestMethod.GET) User findGithubUser(@PathVariable("username")String username); }

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

SpringCloud系列之声明式服务调用Netflix Feign

16

17

18

19

20

21

22

23

24

25

26

27

28

加上@EnableEurekaClient,@EnableFeignClients,写个接口进行测试

package com.example.springcloud.client; import com.example.springcloud.client.bean.User; import com.example.springcloud.client.service.UserService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.netflix.eureka.EnableEurekaClient; import org.springframework.cloud.openfeign.EnableFeignClients; import org.springframework.scheduling.annotation.Async; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RestController; @SpringBootApplication @EnableEurekaClient @EnableFeignClients @RestController public class SpringcloudFeignClientApplication { @Autowired UserService userService; public static void main(String[] args) { SpringApplication.run(SpringcloudFeignClientApplication.class, args); } @GetMapping("/findUser/{username}") public User index(@PathVariable("username")String username){ return userService.findGithubUser(username); } }

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

要运行eureka服务端,eureka服务提供者,代码请参考上一章博客

补充:IDEA中多实例运行方法

step1:如图,不要加上勾选

step2:指定不同的server端口和实例id,如图:

服务注册,可以看到两个实例

ok,启动eureka server(服务注册中心),eureka服务提供者端,和feign服务消费者端

http://localhost:8083/findUser/mojombo

附录:

ok,本博客参考官方教程进行实践,仅仅作为入门的学习参考资料,详情可以参考Spring Cloud官方文档https://cloud.spring.io/spring-cloud-static/spring-cloud-openfeign/2.2.0.RELEASE/reference/html/

代码例子下载:code download

优质学习资料参考:

方志鹏大佬系列Spring Cloud博客:https://www.fangzhipeng.com/spring-cloud.html

使用Spring Cloud与Docker实战微服务:https://eacdy.gitbooks.io/spring-cloud-book/content/

程序员DD大佬系列Spring Cloud博客:http://blog.didispace.com/spring-cloud-learning/

Spring Spring Cloud 网络

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:接口测试框架实战(一) | Requests 与接口请求构造
下一篇:nginx常用配置记录
相关文章