• SpringCloud之Feign集成Ribbon


    Feign定义【可跳过】

    Spring Cloud Feign是一个声明式的伪Http客户端,它使得写Http客户端变得更简单。其英文表意为“假装,伪装,变形”,是一个http请求调用的轻量级框架,可以以Java接口注解的方式调用Http请求,而不用像Java中通过封装HTTP请求报文的方式直接调用。

    Feign

    属于接口编程调用。可以对比Rest方式来实现负载均衡=>这里!!!
    修改普通的消费者,变成使用feign的消费者客户端

    在这里插入图片描述

    1、导入依赖

        <dependencies>
            
            <dependency>
                <groupId>com.jylgroupId>
                <artifactId>springcloud-apiartifactId>
                <version>1.0-SNAPSHOTversion>
            dependency>
    
            <dependency>
                <groupId>org.springframework.bootgroupId>
                <artifactId>spring-boot-starter-webartifactId>
            dependency>
    
            
            <dependency>
                <groupId>org.springframework.bootgroupId>
                <artifactId>spring-boot-devtoolsartifactId>
            dependency>
            
            <dependency>
                <groupId>org.springframework.cloudgroupId>
                <artifactId>spring-cloud-starter-ribbonartifactId>
                <version>1.4.6.RELEASEversion>
            dependency>
            
            <dependency>
                <groupId>org.springframework.cloudgroupId>
                <artifactId>spring-cloud-starter-eurekaartifactId>
                <version>1.4.6.RELEASEversion>
            dependency>
            
            <dependency>
                <groupId>org.springframework.cloudgroupId>
                <artifactId>spring-cloud-starter-feignartifactId>
                <version>1.4.6.RELEASEversion>
            dependency>
        dependencies>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37

    2、创建服务层接口

    在服务层接口上添加@FeignClient注解 name= “对应eureka服务界面Application的值”
    注意:这里的映射路径要对应提供者控制层提供的访问路径

    @FeignClient(name = "SPRINGCLOUD-PROVIDER-DEPT")
    public interface DeptClientService {
    
        @GetMapping("/dept/get/{id}")
        public Dept get(@PathVariable("id") Long id);
    
        @GetMapping("/dept/list")
        public List<Dept> getAll();
    
        @PostMapping("/dept/add")
        public boolean add(Dept dept);
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    3、客户端配置文件类

    返回的是负载均衡规则,此规则也可以自定义,自定义类需要实现IRule接口

    @Configuration  
    public class ConfigBean{  
        @Bean  
        public IRule randomRule() {  
            return return new RandomRule(); // 随机
        }  
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    4、feign实现客户端的控制层

    直接自动注入服务层接口,就可以访问到提供者。

    @RestController
    public class DeptConsumerController {
       @Autowired
       private DeptClientService clientService;
       @GetMapping("/consumer/dept/get/{id}")
       public Dept get(@PathVariable("id") Long id){
            return clientService.get(id);
       }
    
       @GetMapping("/consumer/dept/list")
       public List<Dept> getAll(){
           return clientService.getAll();
       }
    
       @PostMapping("/consumer/dept/add")
       public boolean add(Dept dept){
           return clientService.add(dept);
       }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19

    5、feign客户端启动类

    @SpringBootApplication
    @EnableEurekaClient
    @EnableFeignClients(basePackages = {"com.jyl.springcloud"}) // 扫描到springcloud-api中的sercie包下的DeptClientService接口
    public class DeptConsumer_Feign_80 {
        public static void main(String[] args) {
           SpringApplication.run(DeptConsumer_Feign_80.class,args);
        }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    6、测试结果

    启动3个eureka服务、3个提供者和一个feign消费者

    在这里插入图片描述

    启动类

    访问 http://localhost/consumer/dept/list,测试负载均衡,默认是轮询方式。

    在这里插入图片描述

    获取dept的所有消息

  • 相关阅读:
    Windows平台搭建wxWidgets 3.2.3开发环境
    算法入门 | 分治策略
    UE4 RTS 框选功能实现
    join on后面 加条件 与 where后面加条件的区别
    Java Reflection中Getters and Setters简介说明
    zabbix 配置 nginx 监控
    力扣(518.377)补7.31
    网络是如何进行通信
    到底什么是TORCH.NN?
    事业编招聘:雄安新区公开选聘专业骨干人才
  • 原文地址:https://blog.csdn.net/weixin_46171048/article/details/138194341