走进Spring Cloud之五 eureka Feign(服务调用者)(Greenwich版本)

走进Spring Cloud之五 eureka Feign(服务调用者)(Greenwich版本)

  • Feign
  • service-consumer
    • moudle
    • pom.xml
    • application.yml
    • ConsumerExampleApplication.java
    • FeignExampleService.java
    • 启动工程

Feign

Feign是一个声明式、模板化的HTTP客户端。它使得写Http客户端变得更简单。使用Feign,只需要用JAX-RS或Spring MVC注解创建可以实现的动态接口。

微服务之间的调用本质还是http请求,如果对于每个请求都需要写请求代码,增加请求参数,同时对请求结果做处理,就会存在大量重复工作,而feign非常优雅的帮助我们解决了这个问题,只需要定义一个interface,fegin就知道http请求的时候参数应该如何设置。

同时,feign也集成了ribbon,只要在微服务中依赖了ribbon,feign默认会使用ribbon定义的负载均衡策略。

最重要的是,feign并不是仅仅只能使用在有eureka或者ribbon的微服务系统中,任何系统中,只要涉及到http调用第三方服务,都可以使用feign,帮我们解决http请求的代码重复编写。

service-consumer

moudle

新建消费者模块
new ->moudle ->service-consumer

pom.xml

修改pom.xml添加spring-cloud-starter-openfeign依赖


<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <artifactId>scexampleartifactId>
        <groupId>com.pubutechgroupId>
        <version>0.0.1-SNAPSHOTversion>
    parent>
    <modelVersion>4.0.0modelVersion>

    <artifactId>service-consumerartifactId>
    <packaging>jarpackaging>

    <dependencies>
        <dependency>
            <groupId>org.springframework.cloudgroupId>
            <artifactId>spring-cloud-starter-netflix-eureka-clientartifactId>
        dependency>
        <dependency>
            <groupId>org.springframework.cloudgroupId>
            <artifactId>spring-cloud-starter-openfeignartifactId>
        dependency>
    dependencies>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloudgroupId>
                <artifactId>spring-cloud-dependenciesartifactId>
                <version>${spring-cloud.version}version>
                <type>pomtype>
                <scope>importscope>
            dependency>
        dependencies>
    dependencyManagement>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.bootgroupId>
                <artifactId>spring-boot-maven-pluginartifactId>
            plugin>
        plugins>
    build>

project>

application.yml

resource目录下新建application.yml修改配置信息如下:

server:
  port: 8080

spring:
  application:
    name: service-consumer

eureka:
  client:
    service-url:
      #设置与Eureka Server交互的地址,查询服务和注册服务都需要依赖这个地址。默认是http://localhost:8761/eureka ;多个地址可使用 , 分隔。
      defaultZone: http://localhost:8761/eureka/,http://localhost:8762/eureka/,http://localhost:8763/eureka/

ConsumerExampleApplication.java

新建SpringBootApplication ConsumerExampleApplication.java

@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class})
//启用服务注册与发现
@EnableDiscoveryClient
//启用feign进行远程调用
@EnableFeignClients
public class ConsumerExampleApplication {


    public static void main(String[] args) {
        SpringApplication.run(ConsumerExampleApplication.class, args);
    }


}

FeignExampleService.java

新建FeignClient进行远程服务调用

@FeignClient(value = "service-producer")
public interface FeignExampleService {

    @GetMapping("hello")
    public String hello(@RequestParam(value = "name") String name);

}

继续新建远程服务调用测试Controller

@RestController
public class ConsumerController {

    @Resource
    private FeignExampleService feignExampleService;

    @GetMapping("/hello/{name}")
    public String index(@PathVariable("name") String name) {
        return feignExampleService.hello(name);
    }

}

启动工程

再次访问 localhost:8761
走进Spring Cloud之五 eureka Feign(服务调用者)(Greenwich版本)_第1张图片

访问页面http://localhost:8080/hello/jason
调用的结果如下:

走进Spring Cloud之五 eureka Feign(服务调用者)(Greenwich版本)_第2张图片

GitHub源代码

你可能感兴趣的:(SpringCloud,走进SpringCloud)