Spring Cloud 入门——5.1 Feign 声明式调用

代码信息

本篇文章涉及代码版本

组件 版本
Spring Boot 2.0.8.RELEASE
Spring Cloud Finchley.SR1

本篇文章涉及应用

应用 说明
base-eureka 服务发现
base-feign 声明式调用
base-producer 提供服务的最基础的应用

之前几个例子中的服务调用,我们使用直接地址请求和LoadBalancerClient的服务选择调用,这样客户端调用服务端数据的时候可能需要进行拼装和解析。而使用Feign可以使我们编写客户端请求的时候更加简单。

引入Feign组件

构建maven依赖

首先除了之前的依赖需要额外引入feign的依赖

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

参数配置application.yml

spring:
  application:
    name: base-feign
server:
  port: 8403

eureka:
  client:
    service-url: 
      defaultZone: http://localhost:8000/eureka/
logging:
  file: ${spring.application.name}.log

代码编写

主类编写

开启feign服务,@EnableFeignClients

@EnableFeignClients
@EnableEurekaClient
@SpringBootApplication
public class FeignApplicton {
    
    public static void main(String[] args) {
        SpringApplication.run(FeignApplicton.class, args);
    }
}

远程请求代码

@Service
@FeignClient("base-producer")
public interface ClientService {

    /**
     * 测试的服务获取
     * @return
     */
    @RequestMapping(value = "getService",method = RequestMethod.POST)
    String getService();
}

远程调用只需要接口,不需要进行具体实现,实现代码交给feign来处理。只需要在FeignClient中配置服务地址,其他的地方只需要和服务提供方的服务保持一致即可。

测试请求的代码

@RestController
public class FeignController {

    @Autowired 
    ClientService clientService;

    @RequestMapping(value = "/consumer",method = RequestMethod.GET)
    public String getClientService() {
        return clientService.getService();
    }
}

此时请求地址http://localhost:8403/consumer可以成功拿到数据

Spring Cloud 入门——5.1 Feign 声明式调用_第1张图片


本篇文章并未贴出所有代码,涉及的源码下载地址:https://gitee.com/daifylearn/cloud-learn

ps.上述的所有项目都是可以成功运行的。但是在后期为了实现每个应用端口尽量不冲突会有些许调整,而后续某次作死调整结构和名称可能会导致部分项目无法运行o(╯□╰)o,如果发现请留言我进行修改。

你可能感兴趣的:(#,Spring,Cloud,JAVA,分布式)