声明式服务调用fegin

一、简介

Feign是一个声明式的伪Http客户端,它使得写Http客户端变得更简单。使用Feign,只需要创建一个接口并注解。它具有可插拔的注解特性,可使用Feign 注解和JAX-RS注解。Feign支持可插拔的编码器和解码器。Spring Cloud Feign 基于Netflix Feign 实现的,整合了Spring Cloud Ribbon 与 Spring Cloud Hystrix,并且实现了声明式的Web服务客户端定义方式。

简而言之:

  • Feign 采用的是基于接口的注解

  • Feign 整合了ribbon

二、创建一个feign的服务

声明式服务调用fegin_第1张图片

创建完pom文件修改如下



    4.0.0com.vesus
    springcloud-fegin
    0.0.1-SNAPSHOT
    jarspringcloud-fegin
    Demo project for Spring Boot
        com.vesus
        springcloud-demo
        0.0.1-SNAPSHOT
    
        
            org.springframework.boot
            spring-boot-starter
        
        
        
            org.springframework.cloud
            spring-cloud-starter-eureka
        
        
        
            org.springframework.cloud
            spring-cloud-starter-feign
        
        
            org.springframework.boot
            spring-boot-starter-test
            test
        
    
        
            
                org.springframework.boot
                spring-boot-maven-plugin
            
        
    

2、创建application.yml配置文件,增加注册中心地址

eureka:
  client:
    serviceUrl:
      defaultZone: http://localhost:8761/eureka/ # 注册中心地址
spring:
  application:
    name: spring-cloud-fegin
server:
  port: 8764

3、定义一个接口HelloService,通过@ FeignClient(“服务名”),来指定调用哪个服务。

package com.vesus.springcloudfegin.service;
​
import org.springframework.cloud.netflix.feign.FeignClient;
import org.springframework.web.bind.annotation.RequestMapping;
​
@FeignClient(value = "spring-cloud-service")
//springcloud-service中定义的服务的名字
public interface HelloService {
​
    @RequestMapping(value = "/hello") //springcloud-service中定义的服务方法
    public String sayHello() ;
}

4、加入控制器HelloWordController

package com.vesus.springcloudfegin.controller;
​
​
import com.vesus.springcloudfegin.service.HelloService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
​
@RestController
public class HelloController {
​
    @Autowired
    HelloService helloService ;
​
    @RequestMapping(value = "/hello")
    public String sayHello(){
        return  helloService.sayHello() ;
    }
}
​

5、入口方法加入@EnableFeignClients,增加fegin支持。

package com.vesus.springcloudfegin;
​
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.netflix.feign.EnableFeignClients;
​
@SpringBootApplication
@EnableDiscoveryClient
@EnableFeignClients
public class SpringcloudFeginApplication {
​
    public static void main(String[] args) {
        SpringApplication.run(SpringcloudFeginApplication.class, args);
    }
}

启动工程,访问 http://localhost:8764/hello ,显示hello world 。

代码 :https://gitee.com/vesus198/springcloud-demo/tree/master/springcloud-fegin

你可能感兴趣的:(微服务)