SpringCloud Feign

/ springcloud / 2 条评论 / 1251浏览

SpringCloud Feign

Feign是一个声明式WebService客户端。使用Feign能让编写Web Service客户端更加简单,只需要创建一个接口,然后在上面添加注解即可。
Feign通过接口的方法调用Rest服务(之前是Ribbon+RestTemplate) -适应程序员提出的 面向接口编程

Feign简介

Feign使用

api项目修改

   <dependency>
     <groupId>org.springframework.cloud</groupId>
     <artifactId>spring-cloud-starter-feign</artifactId>
   </dependency>
/**
 * MICROSERVICECLOUD-DEPT服务调用接口
 * Feign实现
 * @RequestMapping指向服务提供者
 * @author langao_q
 * @create 2020-04-10 16:06
 */
@FeignClient(value = "MICROSERVICECLOUD-DEPT")
public interface DeptClientService {

    @RequestMapping(value = "/dept/get/{id}",method = RequestMethod.GET)
    public Dept get(@PathVariable("id") long id);

    @RequestMapping(value = "/dept/list",method = RequestMethod.GET)
    public List<Dept> list();

    @RequestMapping(value = "/dept/add",method = RequestMethod.POST)
    public boolean add(Dept dept);
}

新建消费者项目

microservicecloud-consumer-dept-fegin

        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-feign</artifactId>
        </dependency>
/**
 * Feign方式远程调用
 * @author langao_q
 * @create 2020-04-07 14:44
 */
@RestController
public class DeptController_Consumer {

    @Autowired
    private DeptClientService deptClientService;


    @Autowired
    private RestTemplate restTemplate;

    @RequestMapping(value = "/consumer/dept/add")
    public boolean add(Dept dept) {
        return deptClientService.add(dept);
    }

    @RequestMapping(value = "/consumer/dept/get/{id}")
    public Dept get(@PathVariable Long id) {
        return deptClientService.get(id);
    }

    @RequestMapping(value = "/consumer/dept/list")
    public List<Dept> list(){
        return deptClientService.list();
    }
}
server:
  port: 80

spring:
  application:
    name: microservicecloud-consumer-dept-fegin
#客户端注册进eureka服务列表内
eureka:
  client:
    service-url:
      defaultZone: http://eureka7001.com:7001/eureka/,http://eureka7002.com:7002/eureka/,http://eureka7003.com:7003/eureka/
  instance:
    instance-id: microservicecloud-consumer-dept-80
    prefer-ip-address: true     #访问路径可以显示IP地址
/**
 * io.imwj.springcloud是api所在包 已经启动类所在包
 * @author langao_q
 * @create 2020-04-07 14:52
 */
@EnableDiscoveryClient
@SpringBootApplication
@EnableFeignClients(basePackages= {"io.imwj.springcloud"})
@ComponentScan("io.imwj.springcloud")
public class DeptConsumer80_Feign_App {

    public static void main(String[] args) {
        SpringApplication.run(DeptConsumer80_Feign_App.class, args);
    }
}