SpringCloud系列之声明式服务调用NetflixFeign

编程

在上一章的学习中,我们知道了微服务的基本概念,知道怎么基于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

@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;

/**

* <pre>

* UserService

* </pre>

*

* <pre>

* @author mazq

* 修改记录

* 修改后版本: 修改人: 修改日期: 2020/07/28 13:09 修改内容:

* </pre>

*/

@FeignClient(value = "EUREKA-SERVICE-PROVIDER")

@Service

public interface UserService {

@RequestMapping(value = "/api/users/{username}",method = RequestMethod.GET)

User findGithubUser(@PathVariable("username")String username);

}

加上@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);

}

}

要运行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/

以上是 SpringCloud系列之声明式服务调用NetflixFeign 的全部内容, 来源链接: utcz.com/z/519151.html

回到顶部