• SpringCloud :feign接口方式调用服务


    feign:佛儿gin

    1,feign是什么、

      feign是声明式的web service客户端,他让微服务之间的调用看上去更简单了(代码可读性强),

      它是集成了Ribbon,同时又封装了一层接口,因此性能没有Ribbon高,以为微服务调用时舍弃了Resttemplate,用的是面向接口调用的思想,所以可读性上增强了相比Ribbon

    Ribbon对比Feign小总结:

      1.微服务名字:【ribbon】

      2.接口+注解:【feign】 

    实现:

    1.导入依赖,消费者+api(公用区域)

           <!--feign-->
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-feign</artifactId>
                <version>1.4.6.RELEASE</version>
            </dependency>

    2,在api或者服务端写一个接口,用来接收(绑定)微服务服务

    @Component  //注册到spring容器里
    @FeignClient(value = "SPRINGCLOUD-PROVIDER-DEPT") //被服务直接调用
    public interface DeptClientService {
    
         @GetMapping("/dept/get/{id}")
         Dept queryById(@PathVariable("id") Long id);
    
         @GetMapping("/dept/list")
         List<Dept> queryAll();
    
         @PostMapping("/dept/add")
         Boolean addDept(String dname);
    
    }

    3.服务消费者调用接口

    @RestController
    public class FeignDeptConsumerController {
    
        //调用api的接口
        //这里报错,但没有错
        @Autowired
        private DeptClientService service = null; //null,因为调用的是接口没有实现类,不可为false,空指针异常
    
        @RequestMapping("/consumer/dept/add/{dname}")
        public Boolean add(@PathVariable("dname") String dname){
            return this.service.addDept(dname);
        }
    
        @RequestMapping("/consumer/dept/get/{id}")
        public Dept get(@PathVariable("id")Long id){
            return this.service.queryById(id);
        }
    
        @RequestMapping("/consumer/dept/list")
        public List<Dept> list(){
            return this.service.queryAll();
        }
    
    
    }

    最后!消费者著启动类开启feigon功能,绑定接口

    @EnableFeignClients(basePackages = {"com.king.springcloud"})//指定路径扫描(feign),数组
    @SpringBootApplication
    //Ribbon和Eureka整合,客户端可以直接调用,不用关心ip地址
    @EnableEurekaClient
    @EnableFeignClients(basePackages = {"com.king.springcloud"})//指定路径扫描(feign),数组
    public class FeignDeptConsumer_80 {
        public static void main(String[] args) {
            SpringApplication.run(FeignDeptConsumer_80.class,args);
        }
    }

     

  • 相关阅读:
    iOS中图片与视频一次性多选
    UIImagePickerController Class
    1月16日
    10月20日
    1月14日
    1月13日
    1月12日
    1月11日
    课程评价与建议
    加分总结
  • 原文地址:https://www.cnblogs.com/CL-King/p/14336599.html
Copyright © 2020-2023  润新知