spring cloud之Feign的使用

Posted L_O_V_E_Java

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了spring cloud之Feign的使用相关的知识,希望对你有一定的参考价值。

原始的调用客户端的方式是通过注入restTemplate的方式

restTemplate.getForObject("http://CLIENT/hello", String.class)

 

通过feign的方式

配置消费者项目cloud-consume

pom.xml

依赖jar

<dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>
        </dependency>

 

application.yml

添加启动feign 可实现错误回调

feign:
  hystrix:
    enabled: true

 

启动应用类

ClondConsumeApplication.java

添加注解@EnableFeignClients

 

HelloService.java接口

package com.tp.soft.cloudconsume.service;

import com.tp.soft.cloudconsume.service.impl.HelloServiceFallback;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;

@FeignClient(value = "CLIENT", fallback = HelloServiceFallback.class)
public interface HelloService {
    @GetMapping("/hello")
    String hello();
}

 

其中CLIENT则为注册中心被调用的应用名,/hello完全和客户端业务接口一样,fallback则为错误回调的方法,同时可以防止应用雪崩效应.

 

HelloServiceFallback.java接口

package com.tp.soft.cloudconsume.service.impl;

import com.tp.soft.cloudconsume.service.HelloService;
import org.springframework.stereotype.Component;

@Component
public class HelloServiceFallback implements HelloService {
    @Override
    public String hello() {

        return "request error";
    }
}

 

HelloController.java

package com.tp.soft.cloudconsume.controller;

import com.tp.soft.cloudconsume.service.HelloService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;

import javax.annotation.Resource;

@RestController
public class HelloController {

//    @Autowired
//    RestTemplate restTemplate;

    @Resource
    private HelloService helloService;

    @GetMapping("hi")
    public String hi(){
        //return restTemplate.getForObject("http://CLIENT/hello", String.class);
        return helloService.hello();
    }
}

 

和原来在controller调用接口一模一样的去调用就可以了

 

最后的效果:

 

 

 

 



以上是关于spring cloud之Feign的使用的主要内容,如果未能解决你的问题,请参考以下文章

spring cloud 之 Feign 使用HTTP请求远程服务

Spring Cloud之Feign客户端

Spring Cloud之Feign

Spring Cloud 之 Feign

(61)java Spring Cloud+Spring boot+mybatis企业快速开发架构之Feign调用前统一申请Token传递到调用的服务中

Spring Cloud 之 Feign.