springCould - feign

Ribbon和Feign都是用于调用其他服务的,不过方式不同。

1.启动类使用的注解不同,Ribbon用的是@RibbonClient,Feign用的是@EnableFeignClients。

2.服务的指定位置不同,Ribbon是在@RibbonClient注解上声明,Feign则是在定义抽象方法的接口中使用@FeignClient声明。

3.调用方式不同,Ribbon需要自己构建http请求,模拟http请求然后使用RestTemplate发送给其他服务,步骤相当繁琐。

  Feign则是在Ribbon的基础上进行了一次改进,采用接口的方式,将需要调用的其他服务的方法定义成抽象方法即可,

  不需要自己构建http请求。不过要注意的是抽象方法的注解、方法签名要和提供服务的方法完全一致。

 

一,基于前俩章,启动注册服务工程service_eureka,端口为8791,俩个提供服务工程(service_client1 : 8762,serevice_client2:8763)

二,创建feign服务,新建springboot子工程

        1.配置pom.xml



    4.0.0
    
        springcloud
        stirngcould
        0.0.1-SNAPSHOT
         
    
    com.example
    feign
    0.0.1-SNAPSHOT
    feign
    jar
    Demo project for Spring Boot

    
        1.8
    

    
        
            org.springframework.boot
            spring-boot-starter
        

        
            org.springframework.boot
            spring-boot-starter-test
            test
        

        
            org.springframework.cloud
            spring-cloud-starter-netflix-eureka-client
        
        
            org.springframework.boot
            spring-boot-starter-web
        
        
            org.springframework.cloud
            spring-cloud-starter-openfeign
        

    

    
        
            
                org.springframework.boot
                spring-boot-maven-plugin
            
        
    

    2.配置application.yml

eureka:
  client:
    serviceUrl:
      defaultZone: http://localhost:8791/eureka/
server:
  port: 8765
spring:
  application:
    name: feign

    3.启动类添加注解

package com.example.feign;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
import org.springframework.cloud.openfeign.EnableFeignClients;

@SpringBootApplication
@EnableEurekaClient
@EnableDiscoveryClient
@EnableFeignClients
public class FeignApplication {

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

}

   4.定义一个接口,通过@FeignClient("服务名“)来指定调用的服务

   springCould - feign_第1张图片

    5.创建控制器访问服务

springCould - feign_第2张图片

6.访问浏览器,可实现负载均衡效果

springCould - feign_第3张图片

你可能感兴趣的:(java)