学习spring cloud记录11-Feign初体验

前言

Feign英语单词,主要用作为动词,用作动词译为“装作;假装,伪装;捏造(借口、理由等);创造或虚构,假装;装作;作假;佯作”

Feign是一个声明式的http客户端,起作用就是帮助我们优雅的实现http请求的发送,解决restTemplate的不足之处。

RestTemplate存在的问题:

代码可读性差,编程体验不统一

参数复杂的url难以维护

使用

引入依赖

        
            org.springframework.cloud
            spring-cloud-starter-openfeign
        

在启动类加入注解

@SpringBootApplication
@EnableFeignClients
public class DemoOrderApplication {

...
}

编写客户端

新建接口,FeignClient指定服务名

package priv.sinoam.demoorder.demo.clients;

import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;

import java.util.Map;

@FeignClient("demo-user")
public interface UserClient {

    @GetMapping("/demouser/user/test")
    Map test1();
}

调用接口

    @Autowired
    private UserClient userClient;

    @Override
    public Map test1() {
        Map map2 = userClient.test1();
        return map;
    }

此时应该可以启动了,但是

启动失败

报错中可以找到这句话:No Feign Client for loadBalancing defined. Did you forget to include spring-cloud-starter-loadbalancer?

由于SpringCloud Feign在Hoxton.M2 RELEASED版本之后不再使用Ribbon而是使用spring-cloud-loadbalancer,所以不引入spring-cloud-loadbalancer会报错

引入依赖

        
            org.springframework.cloud
            spring-cloud-loadbalancer
        

完美解决,正常启动

验证

报错:

java.lang.AbstractMethodError: org.springframework.cloud.netflix.ribbon.RibbonLoadBalancerClient.choose(Ljava/lang/String;Lorg/springframework/cloud/client/loadbalancer/Request;)Lorg/springframework/cloud/client/ServiceInstance;

在nacos依赖中添加扩展:

        
        
            com.alibaba.cloud
            spring-cloud-starter-alibaba-nacos-discovery
            
                
                    org.springframework.cloud
                    spring-cloud-starter-netflix-ribbon
                
            
        
    

重启测试成功学习spring cloud记录11-Feign初体验_第1张图片

 后记

版本太新可能会遇到问题,但是网上很多是选择退回版本的方式解决,但其实可以与时俱进的,不必要的时候,何必退后呢。

你可能感兴趣的:(java,mysql,spring,redis,spring,boot)